0002.spark2.0源码解析(2)--master的HA


一:Master HA解析
     1.生成环境下一般采用Zookeeper做HA,且3台Master,Zookeeper会自动化管理Master的切换
     2.采用Zookeeper做HA,Zookeeper负责保存Spark集群运行的元数据信息:Worker、Drivers、Applications、Executors
     3.Zookeeper遇到当前Active级别的Master出现障碍的时候,从Standby Master中选出一台作为Activer Master ,但是要注意,被选举后到成为正真的Active Master之间需要从Zookeeper中获取集群当前数据的元数据信息并进行恢复。
     4.Master切换过程中,所有已经运行的程序都正常运行,因为Spark Application在运行前就已经通过Cluster Manager获取了计算资源,所以在运行Job本身的调度和处理与Master没有任何关系。
     5.在Master的切换过程中唯一的影响是:不能提交Job,一方面不能提交新的应用程序给集群,因为只有Active Master才能接收新的程序提交请求;另一方面,已经运行的程序也不能因为Active操作出发新的Job提交请求。

二、Master HA的四大方式
     1.Master HA的四大方式:ZOOKEEPER、FILESYSTEM、CUSTOM、NONE
     2.说明
     (1)ZOOKEEPER:自动管理Master
     (2)FILESYSTEM的方式在Master出现故障后,需要手动重新启动机器,机器启动后会立即成为Master级别的Master来对外提供服务(接收新的Job提交,接收新的应用程序提交请求)
     (3)CUSTOM:允许用户自定义Master HA的实现,这对于高级用户特别重要
     (4)NONE:这是默认情况,当我们下载安装了Spark集群,就是采用这种方式,该方式不会持久化集群数据,Master启动后立即管理集群。

三、源码分析
1.master启动后HA的四种方式
(1)Master类中的onStart方法
override def onStart(): Unit = {
    logInfo("Starting Spark master at " + masterUrl)
    logInfo(s"Running Spark version ${org.apache.spark.SPARK_VERSION}")
    webUi = new MasterWebUI(this, webUiPort)
    webUi.bind()
    masterWebUiUrl = "http://" + masterPublicAddress + ":" + webUi.boundPort
    checkForWorkerTimeOutTask = forwardMessageThread.scheduleAtFixedRate(new Runnable {
      override def run(): Unit = Utils.tryLogNonFatalError {
        self.send(CheckForWorkerTimeOut)
      }
    }, 0, WORKER_TIMEOUT_MS, TimeUnit.MILLISECONDS)

    if (restServerEnabled) {
      val port = conf.getInt("spark.master.rest.port", 6066)
      restServer = Some(new StandaloneRestServer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值