Saprk 总结之执行流程简图(Client 模式)
1. 背景
- Spark作为大数据分析处理引擎,本身大量参考了Mapreduce的设计思路.
- Spark作为分布式数据处理引擎,本身不存储数据,只是做数据分析.目前业界一般都是和hdfs结合起来,或者和hbase等结合起来,形成完整的数据存储和数据分析解决方案.
- 分布式数据处理技术,为了能够发挥分布式集群各个计算机的优势,主要会做两件事,一个是对要处理的数据做切分,一个是对要执行的代码做切分.否则就无法充分利用分布式集群的优势
- Mapreduce中,利用hdfs的数据切块,让各个节点分别处理各自的数据块.再把要处理的代码进行切分,划分为map和reduce阶段.map阶段,各个节点执行各自的map任务,读取各自的数据.reduce阶段也是一样.
- Spark也是类似的思想,但做了更高级的抽象,同时也对代码切分做了更好的设计.
- Spark抽象出了数据集,如RDD,会把对数据要做的操作,要读取的数据源等信息存起来
- Spark中设计了2中RDD算子,一种是tasnformation,一种是action. action算子才会触发真正的job生成和代码执行,transformation算子只是记录所需要处理的操作和数据来源.
- 所有的RDD算子都不会真正保存数据,只是记录数据来源和针对数据所需要处理的操作.
- 然后所有的RDD的操作都记录完毕之后,根据行动算子触发时机,生成一个job,再生成DAG有向无环图.
- DAG中切分不同阶段,每个阶段都有各自的task需要处理,相同task阶段,要执行的代码逻辑是一样的,但处理的数据各个task会有差异.
- 这样一来,就可以将数据切分,代码也做切分.整体设计和mapreduce类似,但做了更高层级的抽象(RDD),执行流程也做了更好的优化,使用DAG做整体规划,可以有更高效率的性能指标.类似SQL优化器一样,对整体SQL语句做优化.