[spark 之master HA]

2019-10-05  本文已影响0人  我去图书馆了

1、masert的HA

元数据:包括比如管理哪些workers、哪些worker与我(master)通信、当前我启动的driver有哪些,使用本地文件系统确实能管理这些存在于master的元数据。但是存在的问题是需要手动切换master。

zookeeper也可以存储元数据,并且有自动选举的功能。

zookeeper管理着元数据,一旦zookeeper发现原有的master down了,就会在另一台处于standby状态的master上:

(1)恢复原数据

(2)通知所有worker与此节点通信。

(3)切换成alive

zookeeper切换master

2、搭建master-HA

https://spark.apache.org/docs/2.3.1/spark-standalone.html

注意master-ha针对的是standalone模式;在yarn模式下为resourceManager。

standalone的master-HA

具体的配置过程:

(1)进入$SPARK_HOME/conf/spark-env.sh:

对于参数SPARK_DAEMON_JAVA_OPTS这个可以配置多个参数,参数之间使用-D分割开,使用空格分隔开。

spark-env文件配置master-HA

(2)分发spark-env.sh这个配置文件到其他的spark节点。

(现在有3个spark节点node01、node02、node03),如果我想让node01作为master(alive)、node02作为standalone的master。在$SPARK_HOME/sbin下的start-all.sh脚本中,分别先执行了start-master.sh 以及 start-slaves.sh:

start-all.sh

在node02上不能直接./start-master.sh 因为会去读配置文件spark-env.sh,即:

node02的spark-env.sh文件

所以需要更改SPARK_MASTER_HOST为node02。

最后启动:需要在node01上执行./start-all.sh以及在node02上执行./start-master.sh

验证:

访问node01:8080是alive状态;访问node02:8080是standby状态。此时kill -9 node01上的master,刷新8080的界面(需要等一会)。如果真的没有成功,可以去zookeeper/bin执行zkCli.sh进入客户端,执行命令:

```ls /```  

看是否有刚刚创建的主目录。

重新提交任务:

因为配置了HA,所以提交任务的命令会发生变化:

配置HA后spark-submit命令变化

在执行上述任务过程中,kill掉主master,发现正在执行的任务并未受到影响。且standby的master已经将任务接管过来了。

上一篇下一篇

猜你喜欢

热点阅读