SparkContext源码分析

粗略的说明一下SparkContext源码!
createTaskScheduler()针对不同的提交模式,执行不同的方法(local,standalone、yanr等)

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源码分析相关推荐

  1. Spark详解(七):SparkContext源码分析以及整体作业提交流程

    1. SparkContext源码分析 在任何Spark程序中,必须要创建一个SparkContext,在SparkContext中,最主要的就是创建了TaskScheduler和DAGSchedul ...

  2. Spark学习笔记(3)--SparkContext部分源码分析

    SparkContext源码分析 在任何Spark程序中,必须要创建一个SparkContext,在SparkContext中,最主要的就是创建了TaskScheduler和DAGScheduler, ...

  3. 《深入理解Spark:核心思想与源码分析》——SparkContext的初始化(叔篇)——TaskScheduler的启动...

    <深入理解Spark:核心思想与源码分析>一书前言的内容请看链接<深入理解SPARK:核心思想与源码分析>一书正式出版上市 <深入理解Spark:核心思想与源码分析> ...

  4. Spark源码分析之七:Task运行(一)

    在Task调度相关的两篇文章<Spark源码分析之五:Task调度(一)>与<Spark源码分析之六:Task调度(二)>中,我们大致了解了Task调度相关的主要逻辑,并且在T ...

  5. Spark 源码分析

    2019独角兽企业重金招聘Python工程师标准>>> 一. 启动篇 (一) 引子 在spark-shell终端执行 val arr = Array(1,2,3,4) val rdd ...

  6. 《深入理解Spark:核心思想与源码分析》——1.2节Spark初体验

    本节书摘来自华章社区<深入理解Spark:核心思想与源码分析>一书中的第1章,第1.2节Spark初体验,作者耿嘉安,更多章节内容可以访问云栖社区"华章社区"公众号查看 ...

  7. ElasticSearch-hadoop saveToEs源码分析

    ElasticSearch-hadoop saveToEs源码分析: 类的调用路径关系为: EsSpark -> EsRDDWriter -> RestService -> Rest ...

  8. Spark源码分析 – DAGScheduler

    DAGScheduler的架构其实非常简单, 1. eventQueue, 所有需要DAGScheduler处理的事情都需要往eventQueue中发送event 2. eventLoop Threa ...

  9. spark读取文件源码分析-2

    文章目录 1. job1产生时机源码分析 1. DataSoure.getOrInferFileFormatSchema() 2. ParquetFileFormat.inferSchema 1. 简 ...

最新文章

  1. java 拉姆表达式_强大的拉姆表达式转Sql 类库 - SqlSugar 隐藏功能之Lambda
  2. JavaSE基础笔记八
  3. 虚拟机开启mysql密码报错_Linux虚拟机下mysql 5.7安装配置方法图文教程
  4. 斯坦福大学机器学习课程资料-吴恩达老师主讲(2008版)
  5. XXXXX CodeForces - 1364A(思维)
  6. mxnet创建新的操作(层)
  7. win7专业版 .bat脚本运行_Win7专业版远程操作详解,帮你轻松入门
  8. 小杜机器人线下店_阿里线下卖车已成事实,阿里造车还会远吗?
  9. [Unity3D]深度相机 Depth Camera
  10. kubernetes视频教程笔记 (10)-资源清单yaml常用字段解释
  11. 基于Socket网络编程基本步骤
  12. 树莓派4b自带wifi_树莓派4B wifi开机启动
  13. c语言教材1-8章参考答案,C语言课后习题参考答案(第1-8章)
  14. 计算机网络按拓扑结构可以划分为,计算机网络按拓扑结构分为哪些
  15. python判断素数的函数_python中判断素数的函数
  16. 2020ICPC上海 E.The Journey of Geor Autumn
  17. Mysql到DM8使用DTS工具进行迁移
  18. 【JAVA】-- 字符流(Reader、Writer)
  19. 论文文献引用规范和标准(国标GBT7714)@endnote国标样式@citation交叉引用编号
  20. 002.计算机核心基础知识2

热门文章

  1. 排查生产问题linux命令,排查问题所用到的一些Linux命令实践(不定期更新。。)...
  2. java蝇量模式_Head First设计模式——蝇量和解释器模式
  3. JVM(1)——JVM内存分区
  4. 自适应辛普森(算法简要 + 模板)
  5. 【杭电多校2020】Lead of Wisdom【搜索】【复杂度证明】
  6. cf1553C. Penalty
  7. 牛客网 【每日一题】5月11日题目精讲 Moovie Mooving
  8. 【学习笔记】同余最短路
  9. 2021-4-4 省选模拟赛(灯,十字路口,密室逃脱)
  10. LOJ:相框(欧拉回路、分类讨论)