Spark的RDD概要&DAG概述

1.RDD: 弹性分布式数据集(相当于集合)

弹性:RDD的数据默认是存放在内存中,但是内存资源存在不足的情况,spark会将RDD数据写入磁盘(内存和磁盘切换)
容错:如果任务执行失败,可以自动从失败节点进行恢复,由于某个节点宕机了导致数据丢失,RDD会根据自己的数据来源重新计算一遍,计算失败的partition的数据
基于血缘关系:代表具体的任务的来龙去脉,映射hive 表是由哪些表进行生成的或者是最终作用哪些表

分布式:基于集群
数据集:针对一个RDD有多个partition

2.RDD对应HDFS关系图

在这里插入图片描述

3.DAG概要

DAG,有向无环图,Directed Acyclic Graph的缩写,常用于建模。Spark中使用DAG对RDD的关系进行建模,描述了RDD的依赖关系,这种关系也被称之为lineage,RDD的依赖关系使用Dependency维护,参考Spark RDD之Dependency,DAG在Spark中的对应的实现为DAGScheduler。
基础概念
介绍DAGScheduler中的一些概念,有助于理解后续流程。

名词解释
Job调用RDD的一个action,如count,即触发一个Job,spark中对应实现为ActiveJob,DAGScheduler中使用集合activeJobs和jobIdToActiveJob维护Job
Stage代表一个Job的DAG,会在发生shuffle处被切分,切分后每一个部分即为一个Stage,Stage实现分为ShuffleMapStage和ResultStage,一个Job切分的结果是0个或多个ShuffleMapStage加一个ResultStage
Task最终被发送到Executor执行的任务,和stage的ShuffleMapStage和ResultStage对应,其实现分为ShuffleMapTask和ResultTask

创建 RDD 对象;SparkContext 负责计算 RDD 之间的依赖关系,构建 DAG;DAGSchedule 负责把 DAG 图反向解析成多个阶段,每个阶段中包含多个任务,每个任务会被任务调度器分发给工作节点上的 Executor 上执行。
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spark中,RDD的执行流程遵循有向无环图(DAG)的方式进行。下面是关于DAG执行流程图生成的步骤: 1. 转换操作:首先,通过RDD的转换操作(例如map、filter、reduce等)定义数据处理的逻辑。这些操作将构建一个RDD转换图。 2. 逻辑优化:Spark会对RDD转换图进行逻辑优化,以提高执行效率。例如,它可能会合并相邻的转换操作或推测执行等。 3. 任务划分:Spark会将RDD转换图划分为一系列的阶段(Stage)。每个阶段由一组具有相同父RDD依赖关系的转换操作组成。 4. 任务划分优化:对于每个阶段,Spark会将其划分为一组任务(Task),以便并行执行。任务划分也可以根据数据本地性进行优化,尽量将任务分配给与数据最接近的节点。 5. 任务调度:一旦任务划分完成,Spark会将这些任务提交给集群管理器进行调度,以在集群中的多个节点上并行执行。 6. 依赖关系跟踪:在执行期间,Spark会跟踪RDD之间的依赖关系,并确保所有依赖的转换操作被正确执行。 7. 数据传输和处理:在任务执行期间,Spark将数据从一个节点传输到另一个节点,并对其进行相应的转换操作。 8. 结果返回:一旦所有任务都完成,Spark将结果返回给驱动程序,供进一步处理或输出。 总之,SparkRDD执行流程图生成步骤涉及转换操作定义、逻辑优化、任务划分、任务划分优化、任务调度、依赖关系跟踪、数据传输和处理以及结果返回。这些步骤确保了高效的分布式数据处理和计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值