Spark任务流程笔记
来源:互联网 发布:淘宝蚂蚁花呗还款 编辑:程序博客网 时间:2024/04/28 13:23
Spark学习笔记总结
02. Spark任务流程
1. RDD的依赖关系
RDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency)
- 窄依赖
窄依赖指的是每一个父RDD的Partition最多被子RDD的一个Partition使用
总结:窄依赖我们形象的比喻为独生子女 - 宽依赖
宽依赖指的是多个子RDD的Partition会依赖同一个父RDD的Partition
总结:窄依赖我们形象的比喻为超生(多个子女)
查看RDD依赖关系:
整个树形结构:rdd.toDebugString
本身:rdd.dependencies
2. DAG的生成
DAG,有向无环图,原始的RDD通过一系列的转换就就形成了DAG,根据RDD之间的依赖关系的不同将DAG划分成不同的Stage,对于窄依赖,partition的转换处理在Stage中完成计算。对于宽依赖,由于有Shuffle的存在,只能在parent RDD处理完成后,才能开始接下来的计算,因此宽依赖是划分Stage的依据。
3. Spark任务执行流程
大致分为4步:
- 根据算子生成DAG
- 将DAG根据宽依赖切分成任务集合的stages
- Driver将具体任务分发给Worker
- Worker中的executor执行任务
- DAGScheduler和TaskScheduler都在Driver中
4. wordcount执行流程
1. wc示例代码
//textFile会产生两个RDD: 1. HadoopRDD -> MapPartitionsRDDsc.textFile(INPUT_PATH) //flatMap产生1个RDD:MapPartitionsRDD .flatMap { _.split(" ") } //map产生1个RDD:MapPartitionsRDD .map { (_, 1) } //reduceByKey产生了:ShuffledRDD .reduceByKey(_ + _) //暂时不管 .sortBy(_._2, false) //saveAsTextFile产生1个RDD:MapPartitionsRDD .saveAsTextFile(OUTPUT_PATH)
一共产生了6个RDD
2. 执行流程-切分stage
执行流程:
- 根据宽依赖划分成了两个stage,后面一个stage需要等待前一个计算完成
- 第一个stage中的taskSet包含了3个task
- 一个task就是一个流水线pipelining,可以与其他task并行执行,在这里,任务内容是相同的,只是数据不同。
初接触,记下学习笔记,还有很多问题,望指导,谢谢。
0 0
- Spark任务流程笔记
- Spark任务处理流程
- Spark任务处理流程
- Spark任务调度流程
- Spark源码阅读笔记:任务提交流程整理
- Spark任务执行流程解析
- spark的任务执行流程解析
- Spark之任务流程和角色
- [spark] 从spark-submit开始解析整个任务调度流程
- Spark Streaming流任务学习笔记
- 深入Spark内核:任务调度(1)-基本流程
- 深入Spark内核:任务调度(1)-基本流程
- spark任务中基于rdd的执行流程分析
- Spark任务调度流程及调度策略分析
- Jbpm笔记之二 -- 流程实例-任务
- spark任务
- Spark调研笔记第2篇 - 如何通过Spark客户端向Spark提交任务
- Spark源码阅读笔记之任务调度(一)
- PAT_1041 考试座位号(15)
- 静态顺序表的实现(C语言版)
- JVM读书笔记(三):类文件结构
- 继承
- 你的开发为何如此低效?
- Spark任务流程笔记
- SDUT 3565 Feed the monkey【Dp】
- OpenCV中的CamShift彩色目标追踪
- 如何在angularjs的自定义指令内部定义自定义过滤器?
- 【算法习题】校园两旁的树
- GC垃圾收集器
- JVM读书笔记(四):虚拟机类加载机制
- Hadoop_FileInputFormat分片
- JavaScript 三种创建对象的方法