HA架构图
1.Zookeeper正常安装并启动
[caimh@master-node zookeeper-3.4.13]$ bin/zkServer.sh start
[caimh@slave-node1 zookeeper-3.4.13]$ bin/zkServer.sh start
[caimh@slave-node2 zookeeper-3.4.13]$ bin/zkServer.sh start
1)选举
2)保存活跃的Master信息
3)保存所有的worker资源信息,资源使用情况(为了故障切换)
2.修改spark-env.sh文件,添加如下配置:
[caimh@master-node conf]$ vim spark-env.sh
#注释内容
#SPARK_MASTER_HOST=master-node
#SPARK_MASTER_PORT=7077
#添加内容
export SPARK_DAEMON_JAVA_OPTS="
-Dspark.deploy.recoveryMode=ZOOKEEPER
-Dspark.deploy.zookeeper.url=master-node,slave-node1,slave-node2
-Dspark.deploy.zookeeper.dir=/spark"
3.分发配置文件
[caimh@master-node conf]$ xsync spark-env.sh
4.在master-node上启动全部节点
[caimh@master-node spark-2.1.1]$ sbin/start-all.sh
5.在slave-node1上单独手动启动第二个master节点
[caimh@slave-node1 spark-2.1.1]$ sbin/start-master.sh
[caimh@slave-node1 spark-2.1.1]$ jps
10049 Jps
9976 Master
7272 NodeManager
9803 QuorumPeerMain
9899 Worker
7532 SecondaryNameNode
7454 DataNode
6.Spark HA集群访问
干掉master-node节点master进程,slave-node1节点master进程自动由standby切换到alive
提示:如果是HA模式,提交任务可以指定多个master地址,目的是为了提交任务高可用。
如下面的提交任务,master地址为:spark://master-node:7077,slave-node1:7077
[caimh@master-node spark-2.1.1]$ ./bin/spark-submit \
> --class org.apache.spark.examples.SparkPi \
> --master spark://master-node:7077,salve-node1:7077 \
> ./examples/jars/spark-examples_2.11-2.1.1.jar 100
上面制定了master地址,那么就会将任务提交到集群,开始时sparksubmit(客户端)要连接Master,并申请计算资源(内存和核数),Master进行资源调度(就是让那些Worker启动Executor进程 ),在准备工作时,这些进程就已经创建好了。