赞
踩
本篇的环境是干净的,事先没有安装过spark。节点共有node1,node2,node3三台,已完成各种集群化准备。
1)首先在node1上部署python环境,参考以下文章:
linux安装Anaconda——看里面的 三、Anaconda安装(Linux)
2)然后在node2 和 node3上同样执行以上步骤。
前提条件
下载网址:https://dlcdn.apache.org/spark
我目前使用的版本是spark-3.2.0-bin-hadoop3.2.tgz
,下载链接为:
链接:https://pan.baidu.com/s/1ZmarnyvBzHESBMXRBnri4g?pwd=d094
提取码:d094
将文件上传到安装路径中,我这里是/export/servers
。
在node1上执行
tar -zxvf spark-3.2.0-bin-hadoop3.2.tgz
名字有点长,我们设置个别名,当然你也可以用mv
命令进行改名
#设置别名(快捷方式)
ln -s /export/servers/spark-3.2.0-bin-hadoop3.2 /export/servers/spark-3.2.0
#重命名
mv spark-3.2.0-bin-hadoop3.2 spark-3.2.0
Spark环境变量的内容就5个:
vi /etc/profile
#添加以下内容,具体安装路径以及版本号以实际为准
export JAVA_HOME=/export/servers/jdk1.8.0_241
export HADOOP_HOME=/export/servers/hadoop-3.3.0
export SPARK_HOME=/export/servers/spark-3.2.0
export PYSPARK_PYTHON=/export/servers/anaconda3/envs/pyspark/bin/python3.8
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
#使文件生效
source /etc/profile
vi /root/.bashrc
#这里主要设置 java路径 和 python执行器路径。
#使文件生效
source /root/.bashrc
主要是/etc/profile 和 /root/.bashrc 这两个文件, 我们可以直接将node1上的同步过去。
scp /etc/profile root@node2:/etc/
scp /etc/profile root@node2:/etc/
scp /root/.bashrc root@node2:/root/
scp /root/.bashrc root@node3:/root/
cd /export/servers/spark-3.2.0/conf
mv workers.template workers
vi workers
#追加以下内容
node1
node2
node3
mv spark-env.sh.template spark-env.sh
#追加以下内容,注意你的安装路径、节点名
有没有和我的不同
## 设置JAVA安装目录 JAVA_HOME=/export/servers/jdk1.8.0_241 ## HADOOP软件配置文件目录,读取HDFS上文件和运行YARN集群 HADOOP_CONF_DIR=/export/servers/hadoop-3.3.0/etc/hadoop YARN_CONF_DIR=/export/servers/hadoop-3.3.0/etc/hadoop ## 指定spark老大Master的IP和提交任务的通信端口 # 告知Spark的master运行在哪个机器上 export SPARK_MASTER_HOST=node1 # 告知sparkmaster的通讯端口 export SPARK_MASTER_PORT=7077 # 告知spark master的 web ui端口 SPARK_MASTER_WEBUI_PORT=8080 # worker cpu可用核数 SPARK_WORKER_CORES=1 # worker可用内存 SPARK_WORKER_MEMORY=1g # worker的工作通讯地址 SPARK_WORKER_PORT=7078 # worker的 webui地址 SPARK_WORKER_WEBUI_PORT=8081 ## 设置历史服务器 # 配置的意思是 将spark程序运行的历史日志 存到hdfs的/sparklog文件夹中 SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node1:8020/sparklog/ -Dspark.history.fs.cleaner.enabled=true"
刚才配置信息里的hdfs://node1:8020/sparklog/
,指定了用hdfs系统里的sparklog
来存放spark程序运行日志信息,但这个目录还不存在,需要创建。
#启动hdfs和yarn
start-all.sh
hadoop fs -mkdir /sparklog
hadoop fs -chmod 777 /sparklog
#查看生成结果
hadoop fs -ls /
mv spark-defaults.conf.template spark-defaults.conf
vi spark-defaults.conf
#追加如下内容
# 开启spark的日期记录功能
spark.eventLog.enabled true
# 设置spark日志记录的路径
spark.eventLog.dir hdfs://node1:8020/sparklog/
# 设置spark日志是否启动压缩
spark.eventLog.compress true
这一步是可选操作,但还是建议修改。因为Spark会疯狂输出日志, 设置级别为WARN时,就只输出警告和错误日志, 而不是一堆信息。
mv log4j.properties.template log4j.properties
vi log4j.properties
按照下图去修改内容
cd /export/servers/
scp -r spark-3.2.0 root@node2:$PWD
scp -r spark-3.2.0 root@node3:$PWD
在node1上进行操作
cd spark-3.2.0
sbin/start-history-server.sh
我们以启动客户端进程来检验Spark on YARN 集群是否可用。
在node1上执行
#以yarn模式启动pyspark
bin/pyspark --master yarn
提交一个子任务
sc.parallelize([1,2,3,4,5]).map(lambda x: x*10).collect()
代码执行成功,说明集群可用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。