描述一下Spark的DAG原理?

DAG(Directed Acyclic Graph)有向无环图,Spark中使用DAG对RDD的关系进行建模,描述了RDD的依赖关系,这种关系也被称之为lineage"血统",RDD的依赖关系使用Dependency维护,Dependency分为宽依赖(一个父RDD被多个子RDD分区使用,有shuffle)和窄依赖(一个父RDD只被一个子RDD分区使用),DAG在Spark中对应的实现为DAGScheduler。

用户提交的Flink Job会被转化成一个DAG任务运行。一个Flink任务的DAG生成计算图大致经历以下三个过程:

StreamGraph最接近代码所表达的逻辑层面的计算拓扑结构,按照用户代码的执行顺序向

StreamExecutionEnvironment添加StreamTransformation构成流式图。JobGraph从、StreamGraph生成,将可以串联合并的节点进行合并,设置节点之间的边,安排资源共享slot槽位和放置相关联的节点,上传任务所需的文件,设置检查点配置等。相当于经过部分初始化和优化处理的任务图。

ExecutionGraph由JobGraph转换而来,包含了任务具体执行所需的内容,是最贴近底层实现的执行图。
了解更多大数据培训相关技术内容欢迎关注小编!

posted @ 2021-12-02 10:45  Linux运维阿铭  阅读(577)  评论(0编辑  收藏  举报