SparkContext源码分析
SparkContext源码分析
standalone模式===》》创建一个TaskSchedulerImpl
1、 底层通过操作SchedulerBackend,针对不同种类的cluster(standalone、yarn。mesoso(亚马逊))调度task
2、 他也可以通过一个LoaclBackend,并且将isLocal设置为true,来在本地模式下工作
3、 他负责处理一下通用的逻辑,比如说决定多个job的调度顺序(FIFO),启动推测任务执行
4、 客户端首先应该调用它的initialize()方法和start()方法,然后通过runTasks()方法提交tasksets
创建SparkDeploySchedulerBackend()
initializer方法中创建一个Pool调度池,FIFO、FAIR
taskScher。start()方法=====》调用了一下SparkDeploySchedulerBackend的start方法
此时:val AppDesc = newApplicationDescription(sc.appName、maxCores,sc.executorMemory,command,appUIaddress)
创建一个ApplicationDescription,非常重要!它代表了当前执行的Application的一下情况,包括Application最大需要多少CPU core 每个slave上需要多大内存。
创建APPclient(Application与spark之间通信)
一个借口。
它负责接收一个spark master的url,以及一个ApplicationDescription,和一个集群事件的监听器,以及各种事件发生时,监听器的回调函数!
start()方法,创建一个clientActor
调用registerWithMaster()里面调用tryRegisterAllMasters(),里面去连接所有的master。
DAGScheduler:实现了面向stage的调度机制的高层次的调度层,他会为每一个job计算一个stage的DAG(有向无环图),追踪RDD和stage的输出是否被物化(写入磁盘或者内存等地方),并且寻找一个最少消耗(最优、最小)调度机制来运行job,他会将stage作为tasksets提交到底层的TaskScheduler上,来在集群上运行他们(task)。
除了处理stage的DAG,还负责决定运行每个task的最佳位置,基于当前的缓存状态,将这些最佳位置提交给底层的TaskSchedulerImpl,此外,他会处理由于shuffle输出文件丢失导致的失败,在这种情况下,旧的stage可能会被重新提交,一个stage内部的失败,如果不是由于shuffle文件丢失导致的,会被TaskScheduler处理,他会多次重复每一个task,知道最后实在不行,才会去取消整个stage。
SparkUI:jetty工具类。
SparkContext源码分析相关推荐
- Spark详解(七):SparkContext源码分析以及整体作业提交流程
1. SparkContext源码分析 在任何Spark程序中,必须要创建一个SparkContext,在SparkContext中,最主要的就是创建了TaskScheduler和DAGSchedul ...
- Spark学习笔记(3)--SparkContext部分源码分析
SparkContext源码分析 在任何Spark程序中,必须要创建一个SparkContext,在SparkContext中,最主要的就是创建了TaskScheduler和DAGScheduler, ...
- 《深入理解Spark:核心思想与源码分析》——SparkContext的初始化(叔篇)——TaskScheduler的启动...
<深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...
- Spark源码分析之七:Task运行(一)
在Task调度相关的两篇文章<Spark源码分析之五:Task调度(一)>与<Spark源码分析之六:Task调度(二)>中,我们大致了解了Task调度相关的主要逻辑,并且在T ...
- Spark 源码分析
2019独角兽企业重金招聘Python工程师标准>>> 一. 启动篇 (一) 引子 在spark-shell终端执行 val arr = Array(1,2,3,4) val rdd ...
- 《深入理解Spark:核心思想与源码分析》——1.2节Spark初体验
本节书摘来自华章社区<深入理解Spark:核心思想与源码分析>一书中的第1章,第1.2节Spark初体验,作者耿嘉安,更多章节内容可以访问云栖社区"华章社区"公众号查看 ...
- ElasticSearch-hadoop saveToEs源码分析
ElasticSearch-hadoop saveToEs源码分析: 类的调用路径关系为: EsSpark -> EsRDDWriter -> RestService -> Rest ...
- Spark源码分析 – DAGScheduler
DAGScheduler的架构其实非常简单, 1. eventQueue, 所有需要DAGScheduler处理的事情都需要往eventQueue中发送event 2. eventLoop Threa ...
- spark读取文件源码分析-2
文章目录 1. job1产生时机源码分析 1. DataSoure.getOrInferFileFormatSchema() 2. ParquetFileFormat.inferSchema 1. 简 ...
最新文章
- java 拉姆表达式_强大的拉姆表达式转Sql 类库 - SqlSugar 隐藏功能之Lambda
- JavaSE基础笔记八
- 虚拟机开启mysql密码报错_Linux虚拟机下mysql 5.7安装配置方法图文教程
- 斯坦福大学机器学习课程资料-吴恩达老师主讲(2008版)
- XXXXX CodeForces - 1364A(思维)
- mxnet创建新的操作(层)
- win7专业版 .bat脚本运行_Win7专业版远程操作详解,帮你轻松入门
- 小杜机器人线下店_阿里线下卖车已成事实,阿里造车还会远吗?
- [Unity3D]深度相机 Depth Camera
- kubernetes视频教程笔记 (10)-资源清单yaml常用字段解释
- 基于Socket网络编程基本步骤
- 树莓派4b自带wifi_树莓派4B wifi开机启动
- c语言教材1-8章参考答案,C语言课后习题参考答案(第1-8章)
- 计算机网络按拓扑结构可以划分为,计算机网络按拓扑结构分为哪些
- python判断素数的函数_python中判断素数的函数
- 2020ICPC上海 E.The Journey of Geor Autumn
- Mysql到DM8使用DTS工具进行迁移
- 【JAVA】-- 字符流(Reader、Writer)
- 论文文献引用规范和标准(国标GBT7714)@endnote国标样式@citation交叉引用编号
- 002.计算机核心基础知识2
热门文章
- 排查生产问题linux命令,排查问题所用到的一些Linux命令实践(不定期更新。。)...
- java蝇量模式_Head First设计模式——蝇量和解释器模式
- JVM(1)——JVM内存分区
- 自适应辛普森(算法简要 + 模板)
- 【杭电多校2020】Lead of Wisdom【搜索】【复杂度证明】
- cf1553C. Penalty
- 牛客网 【每日一题】5月11日题目精讲 Moovie Mooving
- 【学习笔记】同余最短路
- 2021-4-4 省选模拟赛(灯,十字路口,密室逃脱)
- LOJ:相框(欧拉回路、分类讨论)