spark集群搭建
在上篇基础上安装spark集群
安装scala
scala-2.13.2.tgz 链接: https://pan.baidu.com/s/1Sd1t7ZJnE4NoaiQTUqjahw 提取码: arnc
第一步:上传至/usr/local/scala并解压scala-2.13.2.tgz
tar -zvxf scala-2.13.2.tgz
第二步:配置环境变量
vim /etc/profile
在/etc/profile文件中添加以下环境变量
export SCALA_HOME=/usr/local/scala/scala-2.13.2
export PATH=$PATH:$SCALA_HOME/bin
第三步:使环境变量生效
source /etc/profile
第四步:将scala-2.13.2至slave1、slave2
scp -r /usr/local/scala/scala-2.13.2 slave1:/usr/local/scala
scp -r /usr/local/scala/scala-2.11.8 slave2:/usr/local/scala
分别在slave1、salve2上重复第2步
第五步:验证
分别在master、salve1、salve2中执行scala -version,如果安装成功显示版本。
安装spark集群
上传spark-2.2.0-bin-hadoop2.7.tgz
mv spark-2.2.0-bin-hadoop2.7 spark
修改spark-env.sh配置文件
vim spark-env.sh
export JAVA_HOME=/root/jdk1.8.0_251
export SCALA_HOME=/root/scala-2.13.2
export HADOOP_HOME=/usr/local/hadoop/hadoop-2.10.0
export SPARK_HOME=/root/spark
export SPARK_WORKER_CORES=1
# 每一个Worker最多可以使用的cpu core的个数
#设置实例数
export SPARK_WORKER_INSTANCES=1
# 每一个Worker最多可以使用的内存
export SPARK_WORKER_MEMORY=1G
export SPARK_MASTER_HOST=mm
# 配置JAVA_HOME,一般来说,不配置也可以,但是可能会出现问题
# 一般来说,spark任务有很大可能性需要去HDFS上读取文件
# 如果说你的spark就读取本地文件,也不需要yarn管理,不用配
# 设置Master的主机名
# 提交Application的端口,默认就是这个,万一要改呢,改这里
#export SPARK_MASTER_PORT=7077
修改slaves配置文件,添加Worker的主机列表
mv slaves.template slaves
vim slaves
Slave1
Slave2
把SPARK_HOME/sbin下的start-all.sh和stop-all.sh这两个文件重命名
比如分别把这两个文件重命名为start-spark-all.sh和stop-spark-all.sh
原因:
如果集群中也配置HADOOP_HOME,那么在HADOOP_HOME/sbin目录下也有start-all.sh和stop-all.sh这两个文件,当你执行这两个文件,系统不知道是操作hadoop集群还是spark集群。修改后就不会冲突了,当然,不修改的话,你需要进入它们的sbin目录下执行这些文件,这肯定就不会发生冲突了。我们配置SPARK_HOME主要也是为了执行其他spark命令方便
把spark安装包分发给其他节点
在集群所有节点中配置SPARK_HOME环境变量
export SPARK_HOME=/root/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
在spark master节点启动spark集群
start-spark-all.sh
通过WEB查看状态
namenode的webUI端口:50070
yarn的web端口:8088
spark集群的web端口:8080
spark-job监控端口:4040
安装pydev(参考官方文档 https://github.com/pyenv/pyenv)
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
For bash:
echo'export PYENV_ROOT="$HOME/.pyenv"'>>~/.bash_profileecho'export PATH="$PYENV_ROOT/bin:$PATH"'>>~/.bash_profile
For Ubuntu Desktop:
echo'export PYENV_ROOT="$HOME/.pyenv"'>>~/.bashrcecho'export PATH="$PYENV_ROOT/bin:$PATH"'>>~/.bashrc
For Zsh:
echo'export PYENV_ROOT="$HOME/.pyenv"'>>~/.zshrcecho'export PATH="$PYENV_ROOT/bin:$PATH"'>>~/.zshrc
For Fish shell:
set-UxPYENV_ROOT$HOME/.pyenvset-Uxfish_user_paths$PYENV_ROOT/bin$fish_user_paths
安装python
pydev install 3.6.5
vim /etc/profile
export PYSPARK_PYTHON=/root/.pyenv/versions/3.6.0/bin/python
source /etc/profile
运行pyspark
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/__ / .__/\_,_/_/ /_/\_\ version 3.0.0-preview2
/_/
Using Python version 3.6.5 (default, May 28 2020 11:03:33)
SparkSession available as 'spark'.
>>>
自此pyspark相关环境配置完成
测试pyspark on yarn运行
由于经常用到第三方的python库,这样在每台worker节点上去安装第三方库不太现实。
可以使用下面的命令提交到cluster
spark-submit
--master yarn
--deploy-mode cluster
--conf spark.yarn.dist.archives=hdfs:///user/hduser/data/spark_test.zip#pyenv
--conf spark.yarn.appMasterENV.PYSPARK_PYTHON=pyenv/3.6.0/bin/python
/root/spark/examples/src/main/python/als.py
spark.yarn.dist.archives:hdfs:///user/hduser/data/spark_test.zip#pyenv 指定压缩文件地址,压缩文件被分发到 executor 上,并且解压,#pyenv 代表解压到的目录
spark.yarn.appMasterEnv.PYSPARK_PYTHON:指定使用的 python 环境;pyenv 即上面的解压目录,3.6.0 即spark_test.zip解压后的目录。