| 参数 | 含义 |
| spark.deploy.recoveryMode | 设成FILESYSTEM , 缺省值为NONE |
| spark.deploy.recoveryDirectory | Spark 保存恢复状态的目录 |
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/app/hadoop/spark100/recovery"
export SPARK_MASTER_IP=hadoop1 export SPARK_WORKER_CORES=1 export SPARK_WORKER_INSTANCES=1 export SPARK_MASTER_PORT=7077 export SPARK_WORKER_MEMORY=1g export MASTER=spark://${SPARK_MASTER_IP}:${SPARK_MASTER_PORT}
- 将Standalone集群连接到同一个ZooKeeper实例并启动多个Master,利用zookeeper提供的选举和状态保存功能,可以使一个Master被选举,而其他Master处于Standby状态。如果现任Master死去,另一个Master会通过选举产生,并恢复到旧的Master状态,然后恢复调度。整个恢复过程(从原Master失去作用开始)可能要1-2分钟。注意,这种延迟只会影响新Application的调度,对于在故障期间已经运行的 application不会受到影响。
- 因为涉及到多个Master,所以对于应用程序的提交就有了一点变化,因为应用程序需要知道当前的Master的IP地址和端口。这种HA方案处理这种情况很简单,只需要在SparkContext指向一个Master列表就可以了,如spark://host1:port1,host2:port2,host3:port3,应用程序会轮询列表。
- 该HA方案使用起来很简单,首先启动一个ZooKeeper集群,然后在不同节点上启动Master,注意这些节点需要具有相同的zookeeper配置(ZooKeeper URL 和目录)。zookeeper配置参数有:
| 参数 | 含义 |
| spark.deploy.recoveryMode | 设置成ZOOKEEPER,缺省值为 NONE |
| spark.deploy.zookeeper.url | ZooKeeper URL(如192.168.100.111:2181,192.168.100.112:2181...) |
| spark.deploy.zookeeper.dir | ZooKeeper 保存恢复状态的目录,缺省为 /spark |
- Master可以在任何时候添加或移除。如果发生故障切换,新的Master将联系所有以前注册的Application和Worker告知Master的改变。
因为Master可以随意添加,所以就不将Master所定义在conf/spark-env.sh里了,而是直接在Application中定义。export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop1:2181,hadoop2:2181,hadoop3:2181,hadoop4:2181,hadoop5:2181 -Dspark.deploy.zookeeper.dir=/spark" export SPARK_WORKER_CORES=1 export SPARK_WORKER_INSTANCES=1 export SPARK_WORKER_MEMORY=1g
本文介绍Spark Standalone集群的两种高可用解决方案:基于文件系统的单点恢复及基于Zookeeper的Standby Masters。前者适用于开发和测试环境,后者适用于生产环境。
2660

被折叠的 条评论
为什么被折叠?



