开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段:Spark 原理_物理图_介绍】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/689/detail/12021
Spark 原理_物理图_介绍
内容简介
一、回顾
二、了解物理执行图
三、谁来计算 RDD
四、谁来计算 RDD
一、回顾
在前面我们学习了逻辑执行图的生成,是什么,里面包含的内容,总之逻辑执行图就是表达了数据的计算流程,从哪一步到哪一步
接下来我们要去了解一下物理执行图
逻辑执行图最终要运行到集群当中,就是本节要学习的内容
二、了解物理执行图
在逻辑执行图重要了解的问题很简单,如图已经生成好了,接下来我们要研究如何运行在集群中,在此之间,我们要了解集群的内容
如图:
1.集群分为 master-worker-管理多个 executor,最终整个逻辑执行图要在 executor 中运行
2.rdd 可以直接在 executor 中运行吗?RDD1 不能直接再 executor 中运行
3.逻辑执行图是数据流转的过程,数据计算的表达
例如要生产一台车,这里逻辑执行图相当于设计图,车要如何设计都在设计图中,但是设计图不能自发把车造出来,所以需要工人按照设计图将车设计出来,同理有了逻辑执行图,需要工人执行,接下里我们要规划一下谁来执行逻辑执行图,这就是物理图的意义,逻辑执行图表达了数据如何计算,物理图表达了整个计算如何在集群中运行,这就是物理图的作用和意义
三、谁来计算 RDD
rdd 自己是无法计算自身的,谁来计算,我们来看一下
1.RDD 是什么,用来做什么?
回顾 RDD 的五大属性
A list of partitions
//分区列表
A function for computing each split
//计算函数
A list of dependencies on other RDDs
//依赖关系
Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
//分区函数
Optionally, a list of preferred locations to compute each split on(e.g .block locactions for an HIDFS file)
//最佳位置
//分区列表,分区函数,最佳位置,这三个属性其实说的即使数据集在哪,分成了多少份,在哪更合适,在 shuffle 后如何分区
通过这三个属性可以看到 rdd 表达的就是一个数据集的概念
//计算函数和依赖关系,这两个属性其实说的是数据集从哪来、怎样得到
后两个属性说的就是计算的过程
所以结论是 RDD 是一个数据集的表示,不仅表示了数据集,还表示了这个数据集从哪来,如何计算
Rdd 既然是这样的一种表示,更像是一种数据计算的设计图,设计图自身是不能生产的,谁来生产呢?工人
四、谁来计算 RDD
整个集群中执行的组件叫做 executor
1.RDD 是在 executor 中运行,那么直接说 executor 就是那个工人也并不合适
2.直接使用 executor 也是不合适的,因为一个计算的执行总是需要一个容器,例如 JVM 是一个进程,只有进程中才能有线程,所以这个计算 RDD 的线程应该运行在一个进程中,这个进程就是 exeutor,executor 有如下两个职责
(1)和 driver 保持交互从而认领属于自己的任务,动过自身的线程开启任务 //dirve 整个 spark 驱动程序
Executor 会与 driver 保持通讯,认领自身要执行的任务,开启线程
(2)接受任务后,运行任务
3. 所以,应该由一个线程来执行 RDD 的计算任务,而 executor 作为执行这个人物的容器,也就是一个进程,用于创建和执行线程,这个执行具体计算任务的线程叫做 task。
总之,通过物理图进行规划逻辑图如何计算,运行 executor 内部的 task 进行计算
总结知识点,物理图的意义是什么,去编制逻辑图如何计算、在那计算;谁来计算,不可能是 rdd 自己来计算,也不是 executor 来计算,而是 executor 类运行 task 去计算