day26:Spark Runtime(Driver、Masster、Worker、Executor)内幕
来源:互联网 发布:学生怎么开淘宝网店 编辑:程序博客网 时间:2024/05/15 03:38
以下内容整理来源于DT大数据梦工厂:新浪微博:www.weibo.com/ilovepains/
1、spark集群部署
2、job提交解密
3、job的生成和接受
4、Task的运行
5、再论shuffle
一、再度讨论spark集群
1、spark 部署来看五大核心对象:Master, work , Executor、Driver、 CoarseGrainedExecutorbackend
2、spark 在分布式集群设计的时候:最大化功能独立,模块化强内聚松耦合
3、当Driver中的sparkContext初始化的时候会提交程序给Master,Master如果接受该程序在spark中运行的话,就会为当前的程序分配ApplD,
同时会分配具体的计算资源,需要特别注意的是:Master 是根据当前程序提交的配置信息来给集群中的Worker发指令分配具体的计算资源,但是Master发出指令后并不关心
具体的资源是否已经分配,转来说Master发指令就是记录了分配的资源,以后客户端在此提交其他的程序的会就不能使用该资源。其弊端是可能会导致其他要提交的程序无法分配到本来应该可以分配到的计算资源;最终的优势在于spark分布式系统功能弱耦合的基础上最快的运行系统(否则如果master要等待资源最终分配成功后才通知Driver的话会造成Driver阻塞,不能最大化并行计算资源的使用率)
需要补充说明的是:spark在默认情况下由于集权中一般都有一个Application在运行,所有Master分配资源策略的弊端就没有那么明显了。
二:Job提交过程源码揭秘:
1、通过在spakr-shell 运行一个job来了解job提交的过程,然后在通过源码验证
2、在spark中所有的Action都会触发一个至少一个job,上诉代码是通过saveAsTextFile来触发job的。
3、sparkContext在实例化会构造SparkDeploySchedulerBackend、DAGScheduler、TaskScheduleImpl等对象,其中SparkDeploySchedulerBacked负责集群计算资源的管理和调度,DAGScheduler负责高层调度(例如job中stage的划分,数据本地性等内存),TaskShcedulerImpl负责具体Stage的内部底层调度(例如具体每个Task的调度,Task的容错),mapoutTrackerMaster负责shuffle
4、 JobTaskSheduler内部调度
三、Task运行
1、Task 是运行在Executor中,而Executor位于CoarseGrainedExecutorBackend中的,且CoarseGrainedExecutorBackend 和Executor是一一对应的。
2、当CoarseGrainedExecutorBackend 接收到TaskSetManager发过来的LunchTask消息后会反序列化TaskDescription,实现Java Runnable,封装任务。
补充说明:LaunchTask是case class,因为每个消息状态不一样,case object是唯一的。
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)
}
作业:
job的提交和执行过程熟悉
涉及源码: DAGScheduler、 Executor、CoarseGrainedExecutorBackend
DT大数据梦工厂
新浪微博:www.weibo.com/ilovepains/
微信公众号:DT_Spark
博客:http://.blog.sina.com.cn/ilovepains
TEL:18610086859
Email:18610086859@vip.126.com
- day26:Spark Runtime(Driver、Masster、Worker、Executor)内幕
- 第26课: Spark Runtime(Driver、Masster、Worker、Executor)内幕解密
- Spark 角色说明(Client 、Master、Worker、Driver、Executor)
- spark源码学习(三)---worker源码分析-worker启动driver、executor分析
- Spark Master、Worker、Driver、Executor工作流程详解
- Spark源码分析之worker节点启动driver和executor
- spark executor内幕解密
- 大数据Spark “蘑菇云”行动第35课SparkMaster、Worker、Driver、Executor工作流程详解
- 第35课Spark Master、Worker、Driver、Executor工作流程详解
- 第32课:Spark Worker原理和源码剖析解密:Worker工作流程图、Worker启动Driver源码解密、Worker启动Executor源码解密等
- Spark RunTime内幕解密
- Spark Runtime内幕
- Spark Runtime内幕
- spark Runtime内幕解密
- Spark的Worker/Instance /Executor之间的
- 【Spark】worker、executor、stage、task、partition关系
- Spark技术内幕:Executor分配详解
- Spark技术内幕:Executor分配详解
- ORACLE 12c 固定表1
- 练习练习
- iOS数据存储方式
- DSP Study Notes Period 1
- Toast对象的使用
- day26:Spark Runtime(Driver、Masster、Worker、Executor)内幕
- fedora23 双系统 修改系统启动顺序
- [LeetCode OJ] 19. Remove Nth Node From End of List
- crontab 开启日志模式
- sqlite加密
- Ember Debug Adapter (ISA3) --- Feature
- 快速排序
- 蓝桥杯 阶乘计算
- 第二章变量和基本类型