Spark EXecutor彻底解密
来源:互联网 发布:手机号码跟踪软件 编辑:程序博客网 时间:2024/05/21 17:47
一:Spark Executor工作原理
1, 需要特别注意是在CoarseGrainedExecutorBackend启动时向Driver注册Executor其实质是注册ExecutorBackend实例,和Executor实例之间没有直接的关系!!!
2, CoarseGrainedExecutorBackend是Executor运行所在的进程名称,Executor才是正在处理Task的对象,Executor内部是通过线程池的方式来完成Task的计算的;
3, CoarseGrainedExecutorBackend和Executor是一一对应的;
4, CoarseGrainedExecutorBackend是一个消息通信体(其具体实现了ThreadSafeRPCEndpoint),可以发送信息给Driver并可以接受Driver中发过来的指令,例如启动Task等;
5, 在Driver进程有两个至关重要的Endpoint:
a) ClientEndpoint:主要负责向Master注册当前的程序,是AppClient的内部成员;
b) DriverEndpoint:这是整个程序运行时候的驱动器,是CoarseGrainedExecutorBackend的内部成员;
6, 在Driver中通过ExecutorData封装并注册ExecutorBackend的信息到Driver的内存数据结构executorMapData中:
private[cluster] class ExecutorData( val executorEndpoint: RpcEndpointRef, val executorAddress: RpcAddress, override val executorHost: String, var freeCores: Int, override val totalCores: Int, override val logUrlMap: Map[String, String]) extends ExecutorInfo(executorHost, totalCores, logUrlMap)
7, 实际在执行的时候DriverEndpoint会把信息吸入CoarseGrainedSchedulerBackend的内存数据结构executorMapData,所以说最终是注册给了CoarseGrainedSchedulerBackend,也就是说CoarseGrainedSchedulerBackend掌握了为当前程序分配的所有的ExecutorBackend进程,而在每一个ExecutorBackend进行实例中会通过Executor对象来负责具体Task的运行。在运行的时候使用synchronized关键字来保证executorMapData安全的并发写操作。
8, CoarseGrainedExecutorBackend收到DriverEndpoint发送过来的RegisteredExecutor消息后会启动Executor实例对象,而Executor实例对象是事实上负责真正Task计算的;
二:Executor具体是如何工作的?
1, 当Driver发送过来Task的时候,其实是发送给了CoarseGrainedExecutorBackend这个RpcEndpoint,而不是直接发送给了Executor(Executor由于不是消息循环体,所以永远也无法直接接受远程发过来的信息);
case LaunchTask(data) => if (executor == null) { logError("Received LaunchTask command but executor was null") System.exit(1) } else { val taskDesc = ser.deserialize[TaskDescription](data.value) logInfo("Got assigned task " + taskDesc.taskId) executor.launchTask(this, taskId = taskDesc.taskId, attemptNumber = taskDesc.attemptNumber, taskDesc.name, taskDesc.serializedTask) }
2, ExecutorBackend在收到Driver中发送过来的消息后会提供调用launchTask来交给Executor去执行:
- Spark EXecutor彻底解密
- spark executor内幕解密
- 第33课:Spark Executor内幕彻底解密:Executor工作原理图、ExecutorBackend注册源码解密、Executor实例化内幕、Executor具体工作内幕
- 第33课: Spark Executor内幕彻底解密:Executor工作原理图、ExecutorBackend注册源码解密、Executor实例化内幕、Executor具体工作内幕
- 大数据IMF传奇行动绝密课程第33课:Spark Executor内幕彻底解密
- Spark On Yarn彻底解密
- spark shuffle 内幕彻底解密
- spark on yarn彻底解密
- spark master ha彻底解密
- Spark Sort-Based Shuffle内幕彻底解密
- day27:Spark on Yarn彻底解密
- spark Hash Shuffle内幕彻底解密
- Spark Sort-Based Shuffle内幕彻底解密
- Spark-executor
- Spark Executor
- spark executor
- 25.Spark Sort-Based Shuffle内幕彻底解密
- Spark Streaming源码解读之数据清理内幕彻底解密
- Android Handler解析
- JAVA中静态成员变量的使用
- 随机点名
- java mysql笔记 基础知识回顾
- vs2017找不到头文件
- Spark EXecutor彻底解密
- struts2第十八讲学习笔记,struts2工作原理精华摘要
- 测试csdn blog editor
- core核心模块--矩阵的掩码操作
- Android仿iOS实现三级联动选择器
- Machine Leanring-Principal Component Analysis(PCA)
- 委托
- 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—B
- 中位数