所谓的高可用是因为当前集群中的Master节点只有一个,所以会存在单点故障问题。所以为了解决单点故障问题,需要在集群中配置多个Master节点,一旦处于活动状态的Master发生故障时,由备用Master提供服务,保证作业可以继续执行。这里的高可用一般采用Zookeeper设置
集群规划
1) 停止集群
sbin/stop-all.sh
2) 启动Zookeeper
zk start
3) 修改spark-env.sh文件添加如下配置
注释如下内容:
#SPARK_MASTER_HOST=hadoop101
#SPARK_MASTER_PORT=7077
SPARK_MASTER_WEBUI_PORT=8989
添加如下内容:
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=hadoop101,hadoop102,hadoop103
-Dspark.deploy.zookeeper.dir=/spark"
4) 分发配置文件
xsync conf/
5) 启动集群
sbin/start-all.sh
6) 启动linux2的单独Master节点,此时linux2节点Master状态处于备用状态
sbin/start-master.sh
7) 提交应用到高可用集群
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://hadoop101:7077,hadoop102:7077 \
--deploy-mode cluster \
./examples/jars/spark-examples_2.12-2.4.5.jar \
10
8) 停止linux1的Master资源监控进程
9) 查看linux2的Master 资源监控Web UI,稍等一段时间后,linux2节点的Master状态提升为活动状态
http://hadoop102:8989