首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
request
function
merge
cookie
flutter
md5
post
heap
format
keyword
shell
cmd
iostream
main
callback
process
bitmap
header
expression
substring
python2
solr
email
metadata
require
tree
web
dockerfile
object
c语言
join
int
audio
plugins
hash
schema
select
httprequest
vba
python3
scala
buffer
stream
vbscript
datetime
grid
include
case
list
hook
text
nodejs
httpclient
hashcode
bytecode
chat
default
bit
erlang
char
php5
frameworks
string
get
timezone
hashtable
triggers
range
import
less
golang
php7
export
python
search
php8
spring
loops
const
当前位置:
开发笔记
>
编程语言
> 正文
SparkWorker原理和源码剖析解密:Worker工作流程图、Worker启动Driver源码解密、Worker启动Executor源码解密等
作者:心忆泪痕 | 来源:互联网 | 2023-09-03 23:26
本課主題SparkWorker原理Worker启动Driver源码鉴赏Worker启动Executor源码鉴赏Worker与Master的交互关系[引言部份:你希望
本課主題
Spark Worker 原理
Worker 启动 Driver 源码鉴赏
Worker 启动 Executor 源码鉴赏
Worker 与 Master 的交互关系
[
引言部份:你希望读者看完这篇博客后有那些启发、学到什么样的知识点
]
更新中......
Spark Worker 原理图
Worker 启动 Driver 源码鉴赏
因为 Worker 中有消息的循环体,可以用来接收消息,接上一章介绍当 Master 把一个 LaunchDriver 发送到 Worker 的时候,Worker 接收这个 LaunchDriver 然后创建一個新的 DriverRunner 实例,我们这里重点研究 LaunchDriver,当启动 Driver 或者是 Executor 的时候,它必需是满足内存的要求的。当实际上不一定会满足 Core 的要求的,也就是说实际分配的 Core 可能比你期待的 Core 多、也有可能比它少 (为什么呢?)
在这里
首先创建一个 DriverRunner 的实例对象
,然后把实例交给 drivers 数据结构 (HashMap[String, DriverRunner]) 来保存信息,这个数据结构很重要,因为在 Worker 下可能启动很多不同的 Executor,你可以理解 DriverRunner 为Driver 进程本身的一个proxy [代理模式],调用它的start( ) 方法并记录一下 coreUsed 和 memoryUsed 的数据。
Cluster 中的 Driver 失敗的時候,如果 Supervise 為 true,則启动該 Driver 的Worker 會負責重新启动該 Driver;
在start( )的方法中会创建一个新的进程;具体代码运行顺序:new Thread( ) --> 创建一个本地目录和下载相关的 Jar包 --> launchDriver( ) --> 判断并收集它的状态 --> 再发送给 Worker 一个状态变化的消息。补充说明:Executor 和 ExecutorBackend 是一对一的关系,一个ExecutorBackend进程里面有一个Executor,而在Executor内部它是通过线程池并发处理的方式来处理我们 Spark 提交过来的 Task。Executor 启动后需要向 Driver 注册,具体是注册给 SparkDeploySchedulerBackend实例。
在本地创建了的一个工作目录
从 HDFS 上获取相关的依赖包 Jar 到本地,因为你提交程序的时候是提交给Spark集群的。
Worker 是实现RPC通信的,否则别人无法给你发消息的,可以初步看一下类的说明,你会发现它是继承著 ThreadRpcEndPoint (在这里先不深入探讨 RpcEndPoint 的机制,如果想了解可以看点击这篇博客)
通过Command PrcoessBuilder
启动Driver
e.g. launchDriver
DriverRunner 启动進程是通過 ProcessBuilder 中的 process.get.waitFor 來完成的。
当Driver 的状态改变的时候
Worker 接收 DriverStatedChanged 信息
然后把信息发送给Master
Master 收到 Worker 发送过来的 Driver状态信息
判断Driver的状态然后把 ERROR、FINISHED、KILLED 和 FAILED 的 driver 删取掉
Worker 启动 Executor 源码鉴赏
Worker 收到 LaunchExecutor 的信息
当Executor 的状态改变的时候
向 Worker 发送一个 ExecutorStatedChange 的信息
在Worker 中收到这个信息后调用 handleExecutorStateChanged 方法
Master 收到 Worker 发送过来的 Executor 状态信息
Master 收到 Worker 的发送的 ExecutorStateChanged 信息
spark
hash
string
jar
并发
hdfs
rpc
int
command
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
build
eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ...
[详细]
蜡笔小新 2023-12-14 00:31:35
main
pack布局管理器的使用方法及注意事项
本文介绍了pack布局管理器在Perl/Tk中的使用方法及注意事项。通过调用pack()方法,可以控制部件在显示窗口中的位置和大小。同时,本文还提到了在使用pack布局管理器时,应注意将部件分组以便在水平和垂直方向上进行堆放。此外,还介绍了使用Frame部件或Toplevel部件来组织部件在窗口内的方法。最后,本文强调了在使用pack布局管理器时,应避免在中间切换到grid布局管理器,以免造成混乱。 ...
[详细]
蜡笔小新 2023-12-10 16:03:24
main
数组或散列中的正则表达式排序 - Regex in array or hash - sorting
Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ...
[详细]
蜡笔小新 2023-12-10 12:41:53
main
使用freemaker生成Java代码的步骤及示例代码
本文介绍了使用freemaker这个jar包生成Java代码的步骤,通过提前编辑好的模板,可以避免写重复代码。首先需要在springboot的pom.xml文件中加入freemaker的依赖包。然后编写模板,定义要生成的Java类的属性和方法。最后编写生成代码的类,通过加载模板文件和数据模型,生成Java代码文件。本文提供了示例代码,并展示了文件目录结构。 ...
[详细]
蜡笔小新 2023-12-09 09:42:44
process
Java调用Windows下某些程序的方法及注意事项
本文介绍了Java调用Windows下某些程序的方法,包括调用可执行程序和批处理命令。针对Java不支持直接调用批处理文件的问题,提供了一种将批处理文件转换为可执行文件的解决方案。介绍了使用Quick Batch File Compiler将批处理脚本编译为EXE文件,并通过Java调用可执行文件的方法。详细介绍了编译和反编译的步骤,以及调用方法的示例代码。 ...
[详细]
蜡笔小新 2023-12-09 08:09:17
format
Hadoop2.6.0 + 云centos +伪分布式只谈部署
3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ...
[详细]
蜡笔小新 2023-10-17 19:28:24
object
struts2重点——ValueStack和OGNL
一、值栈(ValueStack)1.实现类:OGNLValueStack2.对象栈:CompoundRoot( ...
[详细]
蜡笔小新 2023-10-17 18:00:53
main
java读取excel中的数据
在工作中,遇到需要将excel表中的特定数据提取出来,并将数据以键值对的形式存储到map集合中。因为我用的是maven管理的jar包,所 ...
[详细]
蜡笔小新 2023-10-17 15:43:56
main
mongodb数据迁移,程序员未来职场之路
一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ...
[详细]
蜡笔小新 2023-10-17 13:57:50
process
mapreduce源码分析总结
这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ...
[详细]
蜡笔小新 2023-10-17 12:36:35
c语言
C语言指针的应用与价值探讨与阐述
本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ...
[详细]
蜡笔小新 2023-12-13 15:02:30
web
flowable工作流 流程变量_信也科技工作流平台的技术实践
1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ...
[详细]
蜡笔小新 2023-12-13 10:17:15
require
Express App如何提供不需要的静态文件?
本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ...
[详细]
蜡笔小新 2023-12-12 14:38:07
require
开发笔记:MyBatis学习之逆向工程
篇首语:本文由编程笔记#小编为大家整理,主要介绍了MyBatis学习之逆向工程相关的知识,希望对你有一定的参考价值。转载:http://w ...
[详细]
蜡笔小新 2023-10-17 14:24:02
tree
Flutter App 中创建模块并且依赖 Flutter
在FlutterApp中打开对应的Android工程;并且向Android原生工程添加一个AndroidModule模块,并且在工程根settings. ...
[详细]
蜡笔小新 2023-10-17 13:47:59
心忆泪痕
这个家伙很懒,什么也没留下!
Tags | 热门标签
request
function
merge
cookie
flutter
md5
post
heap
format
keyword
shell
cmd
iostream
main
callback
process
bitmap
header
expression
substring
python2
solr
email
metadata
require
tree
web
dockerfile
object
c语言
RankList | 热门文章
1
2017首届中国(无锡)物联网与区块链 产业发展高峰论坛
2
C#基础入门教程方法
3
Filter过滤器(1)
4
有效地记录日志可以简化企业的开发过程
5
Android Studio 查看类结构和继承关系
6
《野蛮女友》上映,新娘结婚当天被劈腿,九孔变身最惨反派
7
福禄克DSX28000/DSX25000 CH 电缆测试仪带了Cat 6A的测试方法: 超6类网线——光明的未来
8
一个有趣的说法:多层神经网络的致命问题与过拟合
9
跟着盒子的代码设计示例,一起对面向对象的设计模式之SOLID原则加深理解
10
常用的js工具函数
11
SAP License:SAP ECC6安装系列一:安装前硬件和软件准备
12
高分求解决方法,高手来啊
13
怎样借助Python爬虫给宝宝起个好名字python 学习
14
金笛邮件邮件连接数据库专题之oracle数据库
15
可汗|鲜肉_机器学习/深度学习入门资料汇总
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有