浪尖 qq 技术交流群 459898801 224209501
浪尖 qq 技术交流群 459898801 224209501
Spark 源码之 Standalone 模式下 master持久化引擎讲解
Standalone 模式下 Master 为了保证故障恢复,会持久化一些重要的数据,来避免 master
故障导致集群不可用这种情况(也即单点故障)。目前,有四种持久化策略:
1,基于 zookeeper 的持久化引擎。
2,基于文件的持久化引擎。
3,用户自定义持久化引擎。
4,不使用持久化引擎。
在 master的 OnStart 方法中,对应的源码如下:
val serializer = new JavaSerializer(conf)
val (persistenceEngine_, leaderElectionAgent_) = RECOVERY_MODE match {
case "ZOOKEEPER" =>
logInfo("Persisting recovery state to ZooKeeper")
val zkFactory =
new ZooKeeperRecoveryModeFactory(conf, serializer)
(zkFactory.createPersistenceEngine(),
zkFactory.createLeaderElectionAgent(this))
case "FILESYSTEM" =>
val fsFactory =
new FileSystemRecoveryModeFactory(conf, serializer)
(fsFactory.createPersistenceEngine(),
fsFactory.createLeaderElectionAgent(this))
case "CUSTOM" =>
val clazz = Utils.classForName(conf.get("spark.deploy.recoveryMode.factory"))
val factory = clazz.getConstructor(classOf[SparkConf], classOf[Serializer])
.newInstance(con
持久化/val/引擎/case/conf/Engine/serializer/master/故障/Mode/
持久化/val/引擎/case/conf/Engine/serializer/master/故障/Mode/
-->