基本介绍
所谓的高可用是因为当前集群中的 Master 节点只有一个,所以会存在单点故障问题。所以
为了解决单点故障问题,需要在集群中配置多个 Master 节点,一旦处于活动状态的 Master
发生故障时,由备用 Master 提供服务,保证作业可以继续执行。这里的高可用一般采用
Zookeeper 设置。
集群规划
步骤
1. 停止集群
[root@hadoop102 spark-standalone]# sbin/stop-all.sh
2. 启动Zookeeper
[root@hadoop102 zookeeper-3.4.10]# bin/zkServer.sh start
3. 修改Spark中的 spark-env.sh 文件,修改如下配置
注释如下内容
#SPARK_MASTER_HOST=hadoop102
#SPARK_MASTER_PORT=7077
添加如下内容
#Master 监控页面默认访问端口为 8080,但是可能会和 Zookeeper 冲突,所以改成 8989,也可以自定义,访问 UI 监控页面时请注意
SPARK_MASTER_WEBUI_PORT=8989
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop102,hadoop103,hadoop104
-Dspark.deploy.zookeeper.dir=/spark"
4. 分发配置文件
[root@hadoop102 spark-standalone]# xsync conf/
5. 启动集群
[root@hadoop102 spark-standalone]# sbin/start-all.sh
6. 启动 hadoop103 的单独 Master 节点,此时linux2 节点 Master 状态处于备用状态
[root@hadoop103 spark-standalone]# sbin/start-master.sh
7. 提交应用到高可用集群
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop102:7077,hadoop103:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
8. 停止 hadoop102的 Master 资源监控进程
[root@hadoop102 spark-standalone]# kill -9 15635 //15635为自己的进程号
9. 查看hadoop103的 Master 资源监控Web UI,稍等一段时间后,hadoop103 节点的 Master 状态提升为活动状态