首页 > 代码库 > 【Spark2.0源码学习】-5.Worker启动
【Spark2.0源码学习】-5.Worker启动
Worker作为Endpoint的具体实例,下面我们介绍一下Worker启动以及OnStart指令后的额外工作
一、脚本概览
下面是一个举例:
/opt/jdk1.7.0_79/bin/java -cp /opt/spark-2.1.0/conf/:/opt/spark-2.1.0/jars/*:/opt/hadoop-2.6.4/etc/hadoop/ -Xmx1g -XX:MaxPermSize=256m org.apache.spark.deploy.worker.Worker --webui-port 8081 spark://zqh:7077
二、启动流程
Worker的启动流程如下:
- SparkConf:加载key以spark.开头的系统属性(Utils.getSystemProperties)
- WorkerArguments:
-
- 解析Master启动的参数(--ip -i --host -h --port -p --cores -c --memory -m --work-dir --webui-port --properties-file)
- 将--properties-file(没有配置默认为conf/spark-defaults.conf)中spark.开头的配置存入SparkConf
- 在没有配置情况下,cores默认为服务器CPU核数
- 在没有配置情况下,memory默认为服务器内存减1G,如果低于1G取1G
- webUiPort默认为8081
- NettyRpcEnv中的内部处理遵循RpcEndpoint统一处理,这里不再赘述
- 最终守护进程会一直存在等待结束信awaitTermination
三、OnStart监听事件
Worker的启动完成后异步执行工作如下:
- 【dispatcher-event-loop】线程扫描到OnStart指令后会启动相关WorkerWebUI(默认端口8081)
- Worker向Master发起一次RegisterWorker指令
- 另起【master-forward-message-thread】线程定期执行ReregisterWithMaster任务,如果注册成功(RegisteredWorker)则跳过,否则再次向Master发起RegisterWorker指令,直到超过最大次数报错(默认16次)
- Master如果可以注册,则维护对应的WorkerInfo对象并持久化,完成后向Worker发起一条RegisteredWorker指令,如果Master为standby状态,则向Worker发起一条MasterInStandby指令
- Worker接受RegisteredWorker后,提交【master-forward-message-thread】线程定期执行SendHeartbeat任务,,完成后向Worker发起一条WorkerLatestState指令
- Worker发心跳检测,会触发更新Master对应WorkerInfo对象,如果Master检测到异常,则发起ReconnectWorker指令至Worker,Worker则再次执行ReregisterWithMaster工作
四、RpcMessage处理(receiveAndReply)
消息实例 | 发起方 | 接收方 | 说明 |
RequestWorkerState | WorkerWebUI | Worker | 返回 WorkerStateResponse |
五、OneWayMessage处理(receive)
消息实例 | 发起方 | 接收方 | 说明 |
SendHeartbeat | Worker | Worker | |
WorkDirCleanup | Worker | Worker | |
ReregisterWithMaster | Worker | Worker | |
MasterChanged | Master | Worker | |
ReconnectWorker | Master | Worker | |
LaunchExecutor | Master | Worker | |
ApplicationFinished | Master | Worker | |
KillExecutor | Master | Worker | |
LaunchDriver | Master | Worker | |
KillDriver | Master | Worker | |
DriverStateChanged | DriverRunner | Worker | |
ExecutorStateChanged |
ExecutorRunner
/Worker
|
Worker/Master |
【Spark2.0源码学习】-5.Worker启动
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。