【Spark2.0源码学习】-5.Worker启动
来源:互联网 发布:picplaypost同类软件 编辑:程序博客网 时间:2024/06/05 04:56
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=256morg.apache.spark.deploy.worker.Worker--webui-port 8081spark://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)
五、OneWayMessage处理(receive)
消息实例发起方接收方说明SendHeartbeatWorkerWorker WorkDirCleanupWorkerWorker ReregisterWithMasterWorkerWorker MasterChangedMasterWorker ReconnectWorkerMasterWorker LaunchExecutorMasterWorker ApplicationFinishedMasterWorker KillExecutorMasterWorker LaunchDriverMasterWorker KillDriverMasterWorker DriverStateChangedDriverRunnerWorker ExecutorStateChangedExecutorRunner
/Worker
Worker/Master 分类: Spark
阅读全文
0 0
- 【Spark2.0源码学习】-5.Worker启动
- 【Spark2.0源码学习】-4.Master启动
- 【Spark2.0源码学习】-6.Client启动
- 【Spark2.0源码学习】-1.概述
- spark源码学习(三)---worker源码分析-worker启动driver、executor分析
- Spark2.2 Worker原理剖析图解及源码剖析
- nginx源码学习(四)worker进程的启动
- spark 1.6.0 core源码分析4 worker启动流程
- 【Spark2.0源码学习】-10.Task执行与回馈
- 【Spark2.0源码学习】-2.一切从脚本说起
- 【Spark2.0源码学习】-3.Endpoint模型介绍
- 【Spark2.0源码学习】-7.Driver与DriverRunner
- 【Spark2.0源码学习】-8.SparkContext与Application介绍
- Spark2.0源码学习-Job提交与Task的拆分
- 5.Worker源码分析
- 3supervisor启动worker源码分析-worker.clj
- worker启动executor源码分析-executor.clj
- spark-源码-Master与Worker的启动
- Hive----查询执行计划(explain)和分析表数据(ANALYZE)
- 10022---分布式系统理论基础
- Intellij IDEA 快捷键整理
- 记第一次kaggle之旅
- minist读取一张图片
- 【Spark2.0源码学习】-5.Worker启动
- 【广告算法工程师入门 1】互联网广告的商业模式
- 线段树
- MySQL 开发实践 8 问,你能 hold 住几个?
- hdu6165 FFF at Valentine 强联通分量+拓扑排序
- 轻松搞定面试中的二叉树题目
- Zookeeper学习笔记(五)分布式计数器
- 【Spark2.0源码学习】-6.Client启动
- BOS项目及知识点总结 _02