Spark之SparkCore:RDD-数据核心/API【任务切分、运行路径】

1、RDD到底做什么?

  • RDD 是一个应用层面的逻辑概念。一个 RDD 多个分片。RDD 就是一个元数据记录集,记录了 RDD 内存所有的关系数据。
    在这里插入图片描述

2、任务切分

在这里插入图片描述
\quad \quad 在Spark中,一个应用(Application)由一个任务控制节点(Driver)和若干个作业(Job)构成,一个作业由多个阶段(Stage)构成,一个阶段由多个任务(Task)组成.

  • Application:一个能够打成 jar 包的 Spark 程序就是一个应用。里面应该有一个 SparkContext。
  • Job:一个应用中每一个 Action 操作所涉及到的所有转换叫一个 Job。
  • Stage:一个 Job 根据 RDD 之间的宽窄依赖关系划分为多个 Stage,Stage 之间是根据依赖关系来逐个执行的。
  • Task: 一个 Stage 运行的时候,RDD 的每一个分区都会被一个 Task 去处理,也可以认为是并行度。

3、RDD运行规划图

  • 写代码时我们都是从前往后写,但是划分 Stage 是从后往前划分。
  • 划分过程如下:
      1、首先先把所有代码划分成为一个 Stage,然后该 Stage 入栈。
      2、从最后的代码往前走,如果发现 RDD 之间的依赖关系是宽依赖,那么将宽依赖前面的所有代码划分为第二个 Stage,然后该 Stage 入栈。
      3、根据 2 规则继续往前走,直到代码开头。

在这里插入图片描述

1、一个Spark应用中可以有一到多个DAG,取决于触发了多少次Action

2.一个DAG中会有不同的阶段/stage,划分阶段/stage的依据就是宽依赖

3.一个阶段/stage中可以有多个Task,一个分区对应一个Task

参考资料:

https://blog.csdn.net/student__software/article/details/82454609

猜你喜欢

转载自blog.csdn.net/weixin_45666566/article/details/112555316