2023年2月1日
Spark Standalone 部署
大数据 · Spark · 离线计算
在三台服务器上部署 Spark Standalone,用于分布式计算。
需要提前部署 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 #SPAEK export SPARK_HOME=/opt/module/spark-3.1.1 export PATH=$PATH:$SPARK_HOME/bin # 分发 scp -r /etc/profile slave1:/etc/profile scp -r /etc/profile slave2:/etc/profile
vim /etc/profile #SPAEK export SPARK_HOME=/opt/module/spark-3.1.1 export PATH=$PATH:$SPARK_HOME/bin # 分发 scp -r /etc/profile slave1:/etc/profile scp -r /etc/profile slave2:/etc/profile
vim /etc/profile #SPAEK export SPARK_HOME=/opt/module/spark-3.1.1 export PATH=$PATH:$SPARK_HOME/bin # 分发 scp -r /etc/profile slave1:/etc/profile scp -r /etc/profile slave2:/etc/profile
source /etc/profile
source /etc/profile
source /etc/profile
3、workers 配置
cp $SPARK_HOME/conf/workers.template $SPARK_HOME/conf/workers vim $SPARK_HOME/conf/workers master slave1 slave2
cp $SPARK_HOME/conf/workers.template $SPARK_HOME/conf/workers vim $SPARK_HOME/conf/workers master slave1 slave2
cp $SPARK_HOME/conf/workers.template $SPARK_HOME/conf/workers vim $SPARK_HOME/conf/workers master slave1 slave2
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 SPARK_MASTER_HOST=master SPARK_MASTER_PORT=7077
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 SPARK_MASTER_HOST=master SPARK_MASTER_PORT=7077
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 SPARK_MASTER_HOST=master SPARK_MASTER_PORT=7077
5、分发
scp -r /opt/module/spark-3.1.1 slave1:/opt/module/spark-3.1.1 scp -r /opt/module/spark-3.1.1 slave2:/opt/module/spark-3.1.1
scp -r /opt/module/spark-3.1.1 slave1:/opt/module/spark-3.1.1 scp -r /opt/module/spark-3.1.1 slave2:/opt/module/spark-3.1.1
scp -r /opt/module/spark-3.1.1 slave1:/opt/module/spark-3.1.1 scp -r /opt/module/spark-3.1.1 slave2:/opt/module/spark-3.1.1
6、启动
# 启动 $SPARK_HOME/sbin/start-all.sh # 关闭 $SPARK_HOME/sbin/stop-all.sh # 访问地址 http://192.168.25.100:8080/
# 启动 $SPARK_HOME/sbin/start-all.sh # 关闭 $SPARK_HOME/sbin/stop-all.sh # 访问地址 http://192.168.25.100:8080/
# 启动 $SPARK_HOME/sbin/start-all.sh # 关闭 $SPARK_HOME/sbin/stop-all.sh # 访问地址 http://192.168.25.100:8080/
7、提交应用测试
$SPARK_HOME/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://master:7077 \ $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 spark://master:7077 \ $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 spark://master:7077 \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar \ 10
8、配置历史服务器
# 添加历史服务器配置 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 # 添加日志配置 vim $SPARK_HOME/conf/spark-env.sh export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://master:8020/directory -Dspark.history.retainedApplications=30" # 分发 scp $SPARK_HOME/conf/spark-env.sh slave1:$SPARK_HOME/conf/spark-env.sh scp $SPARK_HOME/conf/spark-env.sh slave2:$SPARK_HOME/conf/spark-env.sh scp $SPARK_HOME/conf/spark-defaults.conf slave2:$SPARK_HOME/conf/spark-defaults.conf scp $SPARK_HOME/conf/spark-defaults.conf slave2:$SPARK_HOME/conf/spark-defaults.conf # 在HDFS创建一个历史服务器路径 hadoop fs -mkdir /directory
# 添加历史服务器配置 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 # 添加日志配置 vim $SPARK_HOME/conf/spark-env.sh export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://master:8020/directory -Dspark.history.retainedApplications=30" # 分发 scp $SPARK_HOME/conf/spark-env.sh slave1:$SPARK_HOME/conf/spark-env.sh scp $SPARK_HOME/conf/spark-env.sh slave2:$SPARK_HOME/conf/spark-env.sh scp $SPARK_HOME/conf/spark-defaults.conf slave2:$SPARK_HOME/conf/spark-defaults.conf scp $SPARK_HOME/conf/spark-defaults.conf slave2:$SPARK_HOME/conf/spark-defaults.conf # 在HDFS创建一个历史服务器路径 hadoop fs -mkdir /directory
# 添加历史服务器配置 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 # 添加日志配置 vim $SPARK_HOME/conf/spark-env.sh export SPARK_HISTORY_OPTS=" -Dspark.history.ui.port=18080 -Dspark.history.fs.logDirectory=hdfs://master:8020/directory -Dspark.history.retainedApplications=30" # 分发 scp $SPARK_HOME/conf/spark-env.sh slave1:$SPARK_HOME/conf/spark-env.sh scp $SPARK_HOME/conf/spark-env.sh slave2:$SPARK_HOME/conf/spark-env.sh scp $SPARK_HOME/conf/spark-defaults.conf slave2:$SPARK_HOME/conf/spark-defaults.conf scp $SPARK_HOME/conf/spark-defaults.conf slave2:$SPARK_HOME/conf/spark-defaults.conf # 在HDFS创建一个历史服务器路径 hadoop fs -mkdir /directory
9、启动历史服务器
第一次配置需要先重启spark
启动 $SPARK_HOME/sbin/start-history-server.sh 关闭 $SPARK_HOME/sbin/stop-history-server.sh 访问地址 http://192.168.25.100:18080/
启动 $SPARK_HOME/sbin/start-history-server.sh 关闭 $SPARK_HOME/sbin/stop-history-server.sh 访问地址 http://192.168.25.100:18080/
启动 $SPARK_HOME/sbin/start-history-server.sh 关闭 $SPARK_HOME/sbin/stop-history-server.sh 访问地址 http://192.168.25.100:18080/
# 执行SparkPi测试任务 $SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar 10
# 执行SparkPi测试任务 $SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar 10
# 执行SparkPi测试任务 $SPARK_HOME/bin/spark-submit --class org.apache.spark.examples.SparkPi --master spark://master:7077 $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar 10
8、高可用
需要zookeeper
8.1 高可用用途
高可用可以提供容灾服务,当集群的唯一一个Master宕机后,还能用备用的Master接管
8.2 修改8080端口为8989
vim $SPARK_HOME/conf/spark-env.sh # 注释如下内容: # SPARK_MASTER_HOST=master # SPARK_MASTER_PORT=7077 # 添加如下内容: SPARK_MASTER_WEBUI_PORT=8989 export SPARK_DAEMON_JAVA_OPTS=" -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master,slave1,slave2 -Dspark.deploy.zookeeper.dir=/spark" # 分发 scp $SPARK_HOME/conf/spark-env.sh slave1:$SPARK_HOME/conf/spark-env.sh scp $SPARK_HOME/conf/spark-env.sh slave2:$SPARK_HOME/conf/spark-env.sh # master停止spark集群 $SPARK_HOME/sbin/stop-all.sh # 三台节点启动zookeeper $ZK_HOME/bin/zkServer.sh start # master启动spark集群 $SPARK_HOME/sbin/start-all.sh
vim $SPARK_HOME/conf/spark-env.sh # 注释如下内容: # SPARK_MASTER_HOST=master # SPARK_MASTER_PORT=7077 # 添加如下内容: SPARK_MASTER_WEBUI_PORT=8989 export SPARK_DAEMON_JAVA_OPTS=" -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master,slave1,slave2 -Dspark.deploy.zookeeper.dir=/spark" # 分发 scp $SPARK_HOME/conf/spark-env.sh slave1:$SPARK_HOME/conf/spark-env.sh scp $SPARK_HOME/conf/spark-env.sh slave2:$SPARK_HOME/conf/spark-env.sh # master停止spark集群 $SPARK_HOME/sbin/stop-all.sh # 三台节点启动zookeeper $ZK_HOME/bin/zkServer.sh start # master启动spark集群 $SPARK_HOME/sbin/start-all.sh
vim $SPARK_HOME/conf/spark-env.sh # 注释如下内容: # SPARK_MASTER_HOST=master # SPARK_MASTER_PORT=7077 # 添加如下内容: SPARK_MASTER_WEBUI_PORT=8989 export SPARK_DAEMON_JAVA_OPTS=" -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master,slave1,slave2 -Dspark.deploy.zookeeper.dir=/spark" # 分发 scp $SPARK_HOME/conf/spark-env.sh slave1:$SPARK_HOME/conf/spark-env.sh scp $SPARK_HOME/conf/spark-env.sh slave2:$SPARK_HOME/conf/spark-env.sh # master停止spark集群 $SPARK_HOME/sbin/stop-all.sh # 三台节点启动zookeeper $ZK_HOME/bin/zkServer.sh start # master启动spark集群 $SPARK_HOME/sbin/start-all.sh
8.3 单独启动 slave1 的master作为备用
$SPARK_HOME/sbin/start-master.sh
$SPARK_HOME/sbin/start-master.sh
$SPARK_HOME/sbin/start-master.sh
8.4 提交测试任务
$SPARK_HOME/bin/spark-submit \ --class org.apache.spark.examples.SparkPi \ --master spark://master:7077,slave1:7077 \ $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 spark://master:7077,slave1:7077 \ $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 spark://master:7077,slave1:7077 \ $SPARK_HOME/examples/jars/spark-examples_2.12-3.1.1.jar \ 10