您的位置:首页 > 其它

Spark源码解读(2)——Worker启动过程

2016-07-20 18:05 387 查看
本文将讨论Spark以Standalone模式部署情况下,Worker的启动过程。

上文已经对Master的启动过程进行了较为详细的分析,Worker的启动过程大部分的代码都是和Master复用的,对于这部分不再赘述。因此对Worker启动过程的分析从onStart()方法开始

override def onStart() {
assert(!registered)
logInfo("Starting Spark worker %s:%d with %d cores, %s RAM".format(
host, port, cores, Utils.megabytesToString(memory)))
logInfo(s"Running Spark version ${org.apache.spark.SPARK_VERSION}")
logInfo("Spark home: " + sparkHome)
createWorkDir()
shuffleService.startIfEnabled()
webUi = new WorkerWebUI(this, workDir, webUiPort)
webUi.bind()
registerWithMaster()

metricsSystem.registerSource(workerSource)
metricsSystem.start()
// Attach the worker metrics servlet handler to the web ui after the metrics system is started.
metricsSystem.getServletHandlers.foreach(webUi.attachHandler)
}
这里可以看到Worker启动之后会想Master注册,registerWithMaster(),这部分逻辑相对简单,不再展开叙述

Worker会定时重试向Master注册,知道注册成功或者达到最大重试次数之后才会停止注册

需要注意的是registerWithMaster()方法在两种情况下会被调用:Worker启动,Master没有保存Worker的注册信息但是收到了Worker的心跳(有可能是由Worker心跳超时引起)

上面是对Worker启动过程的简单分析,如有错误欢迎各位同学拍砖。欢迎交流学习,QQ:1037727037
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: