标签:
参照官网文档:High Availability
一共有2中模式,基于文件系统、基于zookeeper。
1.基于文件系统,即将master的信息同步到某个文件目录中,当一个master挂掉之后,会启动宁外一个master读取目录的信息,正在执行的spark应用数据就不会丢失了。按照文档所说,在spark-env.sh中设置如下参数,重启即可。
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/home/hadoop/apps/spark-1.3.0-bin-hadoop2.3/tmp"
(进入spark shell,定义一个变量并赋值,kill掉master进程,然后重启master,可以观察到刚刚的变量还可以使用。这个说法是错误的,即使所有的都挂掉了,变量还可以用。)
总结:1.需要手动重启master。2.经观察,目录spark.deploy.recoveryDirectory仅在master保存一份,在别的节点上不保存,还是存在风险,不知道是否可以存到hdfs上?
2.基于zookeeper,将数据存储到zoopeeper,有多个备用的master,按照文档所说,在spark-env.sh中设置如下参数,重启即可。
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop1:2181,hadoop2:2181,hadoop3:2181 -Dspark.deploy.zookeeper.dir=/spark"
1.master节点会自动切换。2.需要在spark的spark-defaults.conf中配置master为
spark.master spark://hadoop2:7077,hadoop3:7077
改如何验证HA配置成功?
标签:
原文地址:http://my.oschina.net/cjun/blog/508246