【Spark2.0源码学习】-5.Worker启动
/opt/jdk1..0_79/bin/java
-cp /opt/spark-2.1./conf/:/opt/spark-2.1./jars/*:/opt/hadoop-2.6.4/etc/hadoop/
-Xmx1g
-XX:MaxPermSize=256m
org.apache.spark.deploy.worker.Worker
--webui-port 8081
spark://zqh:7077
.png)

- 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
 


- 【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工作
 
| 消息实例 | 发起方 | 接收方 | 说明 | 
| RequestWorkerState | WorkerWebUI | Worker | 返回 WorkerStateResponse | 
| 消息实例 | 发起方 | 接收方 | 说明 | 
| 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启动的更多相关文章
- 【Spark2.0源码学习】-1.概述
		
Spark作为当前主流的分布式计算框架,其高效性.通用性.易用性使其得到广泛的关注,本系列博客不会介绍其原理.安装与使用相关知识,将会从源码角度进行深度分析,理解其背后的设计精髓,以便后续 ...
 - spark2.0源码学习
		
[Spark2.0源码学习]-1.概述 [Spark2.0源码学习]-2.一切从脚本说起 [Spark2.0源码学习]-3.Endpoint模型介绍 [Spark2.0源码学习]-4.Master启动 ...
 - 【Spark2.0源码学习】-6.Client启动
		
Client作为Endpoint的具体实例,下面我们介绍一下Client启动以及OnStart指令后的额外工作 一.脚本概览 下面是一个举例: /opt/jdk1..0_79/bin/jav ...
 - 【Spark2.0源码学习】-2.一切从脚本说起
		
从脚本说起 在看源码之前,我们一般会看相关脚本了解其初始化信息以及Bootstrap类,Spark也不例外,而Spark我们启动三端使用的脚本如下: %SPARK_HOME%/sbin/st ...
 - 【Spark2.0源码学习】-3.Endpoint模型介绍
		
Spark作为分布式计算框架,多个节点的设计与相互通信模式是其重要的组成部分. 一.组件概览 对源码分析,对于设计思路理解如下: RpcEndpoint: ...
 - 【Spark2.0源码学习】-8.SparkContext与Application介绍
		
在前面的内容,我们针对于RpcEndpoint启动以及RpcEndpoint消息处理机制进行了详细的介绍,在我们的大脑里,基本上可以构建Spark各节点的模样.接下来的章节将会从Sp ...
 - 【Spark2.0源码学习】-4.Master启动
		
Master作为Endpoint的具体实例,下面我们介绍一下Master启动以及OnStart指令后的相关工作 一.脚本概览 下面是一个举例: /opt/jdk1..0_79/ ...
 - ThinkPHP5.0源码学习之框架启动流程
		
ThinkPHP5框架的启动流程图如下: ThinkPHP5的启动流程按照文件分为三步: 1.请求入口(public/index.php) 2.框架启动(thinkphp/start.php) 3.应 ...
 - 【Spark2.0源码学习】-7.Driver与DriverRunner
		
承接上一节内容,Client向Master发起RequestSubmitDriver请求,Master将DriverInfo添加待调度列表中(waitingDrivers),下面针对于Dri ...
 
随机推荐
- Spring Boot启动过程(六):内嵌Tomcat中StandardHost与StandardContext的启动
			
看代码有助于线上出现预料之外的事的时候,不至于心慌... StandardEngine[Tomcat].StandardHost[localhost]的启动与StandardEngine不在同一个线程 ...
 - jQuery kxbdMarquee 无缝滚动
			
转:http://code.ciaoca.com/jquery/kxbdmarquee/ <marquee> 曾是 IE 下独有的一个走马灯效果的标签,其他浏览器并不兼容,于是出现了使用 ...
 - 对VC++6.0爱得深沉(二)个性工具的定制
			
初始界面看起来很简洁,但是经过一番改造后,你会拥有私人定制的壮丽界面O(∩_∩)O~,让我们开始吧. 1)原有工具的显示隐藏.位置调整: 比如你觉得这个插入图标没什么用,想把这个隐藏,那么你可以打开[ ...
 - windows phone 8.1开发 onedrive操作详解
			
原文出自:http://www.bcmeng.com/onedrive/ 小梦今天给大家分享一下windows phone 8.1开发 onedrive中的一些操作: Windows phone 8. ...
 - iOS开发之NSOperation & NSOperationQueue
			
1.简介 (1) NSOperationQueue(操作队列)是由GCD提供的队列模型的Cocoa抽象,是一套Objective-C的API,为了使并发(多线程)编程变得更加简单,但效率比GCD略低. ...
 - 英文单词断行问题:CSS中word-break、word-wrap以及hyphens的兼容性和区别
			
CSS中一提到单词断行,最先映入脑海的肯定是word-break和word-wrap这两条属性.但对于这两条属性到底有什么区别,兼容性如何,我一直都概念模糊.今天抽空把它们以及CSS3中新加入的断行属 ...
 - Linux中web服务运行情况的方法
			
监控一般通过脚本实现,使用定时任务定期执行检测. 1.端口 本地:ss,netstat,lsof 远程:telnet,namp,nc 2.本地进程数 例如: lsof -i:80|wc -l ps - ...
 - SBT使用阿里云Maven仓库,解决SBT下载依赖慢。
			
添加:~/.sbt/repositories 文件 文件内容: [repositories] local my-maven-repo: http://maven.aliyun.com/nexus/co ...
 - 在腾讯云上部署Hexo博客
			
推荐理由 ----搭建个人的空间博客目前深受个人开发者的追捧,然而博客的种类和平台有很多,Hexo是一个开源的静态博客生成器.相比于其他博客而言它只要是web容器就能用.除了闷头专研技术之外,程序员还 ...
 - python之列表作为函数的参数
			
函数参数为 列表或者字典 传递一个列表,例如 [1, 2, 3] 将此传给函数get_sum() 求出 各个元素之和 传递一个字典,打印出key/value的对应关系表: #!/usr/bin/env ...