Spark 原理_物理图_Task 设计 | 学习笔记

简介: 快速学习 Spark 原理_物理图_Task 设计

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段Spark 原理_物理图_Task 设计】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/12022


Spark 原理_物理图_Task 设计


内容简介

一、回顾

二、分析 Task 该如何设计

三、总结 Task 设计步骤

 

一、回顾

上节已经了解了物理执行图的意义,由于 RDD 自身是不能计算数据的,那么就需要一个组件来计算,这里就要用到 tesktask 运行在 executor 中,本节主要学习 task 如何设计、有多少个 task,每个 task 计算什么东西,如果站在设计者的角度上分析会设计成什么样子

 

二、Task 该如何设计

1.第一个想法:为每个 RDD 的分区设置一组 task

 image.png

会为每个分区都对一个 task,这个 task 来计算每个分区的数据

例如 splitrdd p1 textrdd p1,之间会有数据的交互, textrdd p1数据计算好后,会将数据传给 textrdd p1

那么 textrdd p1的数据要找地方存储起来,生成文件再传给 splitrdd p1

1)大概就是每个 RDD 都有三个 task,每个 task 对应一个 RDD 的分区,执行一个分区的数据的计算

2)但是这么做有一个非常难以解决的问题,就是数据存储的问题,例如 task147101316在同一个流程上,但是这些 task 之间需要交换数据,因为这些 task 可能被调度到不同的机器上,所以 task1 执行完数据以后需要暂存,后交给 task4 来获取。

2.第二个想法:让数据流动

如果希望避免数据交互,那么需要将一个链条中的所有分区再一个 task 中计算

1)第一个要解决的问题就是,要为数据常见管道(pipeline),有了管道,就可以流动

//可以把管道想象成河流,将 RDD 的分区 p1 当作阀门,每个阀门的作用都不同

image.png

(2)简单来说,就是所有的 RDD 有关联的分区使用同一个 Task,但是关注红框部分的问题

image.png

例如需要计算 reduceRDD 分区的数据,则需要计算完成的 tupleRDD 分区中的数据,reduceRDD 拉取数据

//map 将准备好的数据放入文件,reduceRDD 拉取数据

(3)ReduceRDD p1 计算,需要计算 tupleRDD 三个分区中的数据,所以这里不能用同一个 Task

要计算 tuplerdd 中的 p1p2p3,这三个分区都要计算,这相当于一个 task 计算了所有链条中的所有分区,task2还要再计算一遍,p2 还会需要三个的数据

这个链条的计算相当于河流,textrdd 相当于河上的一道闸,splitrdd 也是一道闸,tuplerdd 是另一道闸,其中各个闸门的意义都不同,t 第一道闸去掉矿物质,第二道闸去掉更细的物质,第三道闸去掉更细的物质,添加漂白剂,所以将数据看作流动的,经历了这些闸,红框位置不好处理

3.第三个想法:划分阶段

既然在 shuffle 处数据流不动了,那就可以在这个地方中断以下。划分完阶段后,先执行前一个分区,再执行后一个分区

image.png

 

三、总结

Task 如何设计

1.第一个想法:每个 RDD 的每个分区都对应一个 task

2.第二个想法:用一个 task 计算所有 RDD 中对应的分区

3、这两个想法都有问题

相关文章
|
6月前
|
移动开发 分布式计算 Spark
Spark的几种去重的原理分析
Spark的几种去重的原理分析
112 0
|
6月前
|
机器学习/深度学习 SQL 分布式计算
Spark核心原理与应用场景解析:面试经验与必备知识点解析
本文深入探讨Spark核心原理(RDD、DAG、内存计算、容错机制)和生态系统(Spark SQL、MLlib、Streaming),并分析其在大规模数据处理、机器学习及实时流处理中的应用。通过代码示例展示DataFrame操作,帮助读者准备面试,同时强调结合个人经验、行业趋势和技术发展以展现全面的技术实力。
474 0
|
22天前
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
30 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
22天前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
33 0
|
22天前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
61 0
|
5月前
|
机器学习/深度学习 分布式计算 API
技术好文:Spark机器学习笔记一
技术好文:Spark机器学习笔记一
36 0
|
6月前
|
SQL 存储 分布式计算
spark执行sql的原理是什么
spark执行sql的原理是什么
110 1
|
分布式计算 Spark
|
存储 分布式计算 调度
Spark源码分析之六:Task调度(二)
        话说在《Spark源码分析之五:Task调度(一)》一文中,我们对Task调度分析到了DriverEndpoint的makeOffers()方法。这个方法针对接收到的ReviveOffers事件进行处理。
1137 0