美文网首页
[spark 之master HA]

[spark 之master HA]

作者: 我去图书馆了 | 来源:发表于2019-10-05 11:27 被阅读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已经将任务接管过来了。

    相关文章

      网友评论

          本文标题:[spark 之master HA]

          本文链接:https://www.haomeiwen.com/subject/fopepctx.html