2023年1月24日
Spark on Yarn 部署
大数据 · Spark · 离线计算
在三台服务器上部署 Spark on Yarn,用于分布式计算。
需要提前部署 hadoop 并启动
1、解压软件包
cd /opt/software tar -zxvf spark-3.1.1-bin-hadoop3.2.tgz mv spark-3.1.1-bin-hadoop3.2 /opt/module/spark-3.1.1
cd /opt/software tar -zxvf spark-3.1.1-bin-hadoop3.2.tgz mv spark-3.1.1-bin-hadoop3.2 /opt/module/spark-3.1.1
cd /opt/software tar -zxvf spark-3.1.1-bin-hadoop3.2.tgz mv spark-3.1.1-bin-hadoop3.2 /opt/module/spark-3.1.1
2、profile 配置
vim /etc/profile #SPARK export SPARK_HOME=/opt/module/spark-3.1.1 export PATH=$PATH:$SPARK_HOME/bin # 分发 scp -r /etc/profile slave1:/etc/ scp -r /etc/profile slave2:/etc/
vim /etc/profile #SPARK export SPARK_HOME=/opt/module/spark-3.1.1 export PATH=$PATH:$SPARK_HOME/bin # 分发 scp -r /etc/profile slave1:/etc/ scp -r /etc/profile slave2:/etc/
vim /etc/profile #SPARK export SPARK_HOME=/opt/module/spark-3.1.1 export PATH=$PATH:$SPARK_HOME/bin # 分发 scp -r /etc/profile slave1:/etc/ scp -r /etc/profile slave2:/etc/
source /etc/profile
source /etc/profile
source /etc/profile
3、yarn-site配置
vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认 是 true --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认 是 true --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认 是 true --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认 是 true --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
<!--是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认 是 true --> <property> <name>yarn.nodemanager.pmem-check-enabled</name> <value>false</value> </property> <!--是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认 是 true --> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>false</value> </property>
4、spark env配置
cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh vim $SPARK_HOME/conf/spark-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_212 YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop # 添加日志配置 export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://master:8020/directory -Dspark.history.retainedApplications=30
cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh vim $SPARK_HOME/conf/spark-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_212 YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop # 添加日志配置 export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://master:8020/directory -Dspark.history.retainedApplications=30
cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark-env.sh vim $SPARK_HOME/conf/spark-env.sh export JAVA_HOME=/opt/module/jdk1.8.0_212 YARN_CONF_DIR=/opt/module/hadoop-3.1.3/etc/hadoop # 添加日志配置 export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://master:8020/directory -Dspark.history.retainedApplications=30
5、配置历史服务器
# 添加历史服务器配置 cp $SPARK_HOME/conf/spark-defaults.conf.template $SPARK_HOME/conf/spark-defaults.conf vim $SPARK_HOME/conf/spark-defaults.conf spark.eventLog.enabled true spark.eventLog.dir hdfs://master:8020/directory spark.yarn.historyServer.address=master:18080 spark.history.ui.port=18080
# 添加历史服务器配置 cp $SPARK_HOME/conf/spark-defaults.conf.template $SPARK_HOME/conf/spark-defaults.conf vim $SPARK_HOME/conf/spark-defaults.conf spark.eventLog.enabled true spark.eventLog.dir hdfs://master:8020/directory spark.yarn.historyServer.address=master:18080 spark.history.ui.port=18080
# 添加历史服务器配置 cp $SPARK_HOME/conf/spark-defaults.conf.template $SPARK_HOME/conf/spark-defaults.conf vim $SPARK_HOME/conf/spark-defaults.conf spark.eventLog.enabled true spark.eventLog.dir hdfs://master:8020/directory spark.yarn.historyServer.address=master:18080 spark.history.ui.port=18080
6、HDFS创建路径
# 在HDFS创建一个历史服务器路径 hadoop fs -mkdir /directory
# 在HDFS创建一个历史服务器路径 hadoop fs -mkdir /directory
# 在HDFS创建一个历史服务器路径 hadoop fs -mkdir /directory
6、提交应用测试
集群模式
$SPARK_HOME/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar \ 10
$SPARK_HOME/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar \ 10
$SPARK_HOME/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode cluster \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar \ 10
客户端模式
$SPARK_HOME/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode client \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar \ 10
$SPARK_HOME/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode client \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar \ 10
$SPARK_HOME/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master yarn \ --deploy-mode client \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar \ 10
7、启动
yarn
# 查看任务 http://slave1:8088/
# 查看任务 http://slave1:8088/
# 查看任务 http://slave1:8088/
spark
# 启动 $SPARK_HOME/sbin/start-all.sh # 关闭 $SPARK_HOME/sbin/stop-all.sh # 访问地址 http://master:8081/
# 启动 $SPARK_HOME/sbin/start-all.sh # 关闭 $SPARK_HOME/sbin/stop-all.sh # 访问地址 http://master:8081/
# 启动 $SPARK_HOME/sbin/start-all.sh # 关闭 $SPARK_HOME/sbin/stop-all.sh # 访问地址 http://master:8081/
历史服务器
# 启动 $SPARK_HOME/sbin/start-history-server.sh # 关闭 $SPARK_HOME/sbin/stop-history-server.sh # 访问地址 http://master:18080/
# 启动 $SPARK_HOME/sbin/start-history-server.sh # 关闭 $SPARK_HOME/sbin/stop-history-server.sh # 访问地址 http://master:18080/
# 启动 $SPARK_HOME/sbin/start-history-server.sh # 关闭 $SPARK_HOME/sbin/stop-history-server.sh # 访问地址 http://master:18080/