高可用的Spark集群介绍

spark集群模式提交作业能否指定Driver的节点 spark高可用集群搭建_zookeeper

1、spark的主备切换过程需要做哪些工作?

    ①、zookeeper将备用master的状态更改为alive。

    ②、备用master从zookeeper拉取元数据。

    ③、备用master向worker节点发送信息,通知已经更换了master。

2、master主备切换过程中,能不能提交一个新的Application?
    不能,因为此时旧的master已经挂掉了,而新的master还没准备好(RECOVER)。

3、如果已经有一个Application已经在集群中运行了,那么此时进行主备切换,对这个Application有没有影响?
没有影响,spark是粗粒度的资源调度,在任务运行之前已经找master为Application申请好资源了,Application运行时已经不需要master了。

高可用的Spark集群搭建

高可用的spark集群与spark集群的搭建很相似,只是修改一个配置文件。所以执行下面的步骤之前,请确保你已经安装了spark集群,若未安装,请按照spark集群搭建进行搭建。
  由于 高可用的spark集群的主备切换需要依赖zookeeper集群,所以还应该提前安装好zookeeper集群。由于我之前已经安装过,这里就不安装了
  若上面两个上面前提条件都已经解决,接下来可以进行高可用的Spark集群的改造了。

1、进入spark安装包的conf目录下,修改spark-env.sh文件。

spark集群模式提交作业能否指定Driver的节点 spark高可用集群搭建_spark_02


2、在spark-env.sh中修改成下面这种内容。(如果已经搭建好Spark集群,则下面的内容,你应该只需要最后一行,具体情况请自行比对分析)

SPARK_MASTER_IP=node01
SPARK_MASTER_PORT=7077
SPARK_WORKER_CORES=3
SPARK_WORKER_MEMORY=2g
SPARK_WORKER_DIR=/opt/software/spark/spark-1.6.3/work
SPARK_WORKER_INSTANCES=1
SPARK_MASTER_WEBUI_PORT=8888
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=node02:2181,node03:2181,node04:2181 -Dspark.deploy.zookeeper.dir=/spark-1106"

3、把配置好的spark-env.sh推送到其他节点。使用命令如下:

4、选择一台节点作为备用master节点,若选择node02,那么在node02节点把SPARK_MASTER_IP的值改为node02。

5、启动zookeeper,在node02,node03,node04节点分别启动zookeeper。

spark集群模式提交作业能否指定Driver的节点 spark高可用集群搭建_SPARK_03


 6、在node01启动spark集群。

spark集群模式提交作业能否指定Driver的节点 spark高可用集群搭建_zookeeper_04


7、在node02的spark的sbin目录下启动备用master。

spark集群模式提交作业能否指定Driver的节点 spark高可用集群搭建_spark_05


8、在webui查看启动的页面。

spark集群模式提交作业能否指定Driver的节点 spark高可用集群搭建_zookeeper_06


9、接下来测试集群是不是高可用的集群。把node01的master杀死,看node02是不是会自动改变状态。

spark集群模式提交作业能否指定Driver的节点 spark高可用集群搭建_SPARK_07


10、node02状态自动切换成功,说明高可用的spark集群配置成功!

spark集群模式提交作业能否指定Driver的节点 spark高可用集群搭建_zookeeper_08