大数据IMF传奇行动绝密课程第23课:从物理执行的角度透视Spark Job
2016-08-12 00:04
399 查看
从物理执行的角度透视Spark Job
1、再次思考pipeline2、窄依赖物理执行内幕
3、宽依赖物理执行内幕
4、Job提交流程
1、再次思考pipeline
即使采用pipeline的方式,函数f对依赖的RDD中的数据集合的操作也会有两种方式
1)f(record), f作用于集合的每一条记录,每次只作用于一条记录
2)f(records),f一次性作用于集合点全部数据
Spark采用第一种方式,原因:
1)无需等待,可以最大化的使用集群的计算资源
2)减少OOM的发生
3)最大化的有利于并发
4)可以精准的控制每一个Partition本身(Dependency)及其内部的计算(conpute)
5)基于lineage的算子流动式函数式编程,节省了中间结果的产生,并且可以最快的恢复
2、思考Spark Job具体的物理执行
Spark Application里面可以产生1个或多个Job,例如spark-shell默认启动的时候内部就没有Job,只是作为资源的分配程序,可以在spark-shell里面写代码,产生若干个Job,普通程序中一般而言可以有不同的Action,每一个Action一般也会出发一个Job
Spark是MapReduce思想的一种更加精致和高效的实现,MapReduce有很多具体不同的实现,例如Hadoop的MapReduce基本的计算流程如下:首先是以JVM为对象的并发执行的Mapper,Mapper中的map的执行会产生输出数据,输出的数据会经过Partitioner指定的规则放到Local FileSystem中,然后再经由Shuffle、Sort、Aggregate变成Reducer中的reduce的输入,执行reduce产生最终的执行结果。Hadoop MapReduce执行的流程虽然简单,但是过于死板,尤其是在构造复杂算法(迭代)时候非常不利于算法的实现,且执行效率极为低下!
Spark算法构造和物理执行时最基本的核心:最大化pipeline
基于Pipeline的思想,数据被使用的时候才开始计算,从数据流动的视角来说,是数据流动到计算的位置!实质上从逻辑的角度来看,是算子在数据上流动。
从算法构建的角度而言:算子作用于数据,所以是算子在数据上流动;方便算法的构建
从物理执行的角度而言:是数据流动到计算的位置!方便系统最为高效的运行!
对于pipeline而言,数据计算的位置就是每个Stage中最后的RDD,一个震撼人心的内幕真相就是:每个Stage中除了最后一个RDD算子是真实的以外,前面的算子都是假的!
由于计算的lazy特性,导致计算从后往前回溯,形成Computing Chain,导致的结果就是需要首先计算出具体一个Stage内部左侧的RDD中本次计算以来的Partition
3、窄依赖的物理执行内幕:
一个Stage内部的RDD都是窄依赖,窄依赖计算本事从逻辑上看是从Stage内部最左侧的RDD开始立即计算的,根据Computing Chain,数据(Record)从一个计算步骤流动到下一个计算步骤,以此类推。直到计算到Stage内部的最后一个RDD来产生计算结果。
Computing Chain的构建是从后往前回溯构建而成,而实际的物理计算则是让数据从前往后在算子上流动,直到流动到不能再流动的位置才开始计算下一个Record。这就导致一个美好的结果:后面的RDD对前面的RDD的依赖虽然是Partition级别的数据集合的依赖,但是并不需要父RDD把Partition中所有的Records计算完毕才整体往后流动数据进行计算,这就极大的提高了计算速率!
4、宽依赖物理执行内幕:
必须等到依赖的父Stage中的最后一个RDD全部数据彻底计算完毕,才能经过shuffle来计算当前的Stage!
相关文章推荐
- 大数据IMF传奇行动绝密课程第23课:从物理执行的角度透视Spark Job
- 大数据IMF传奇行动绝密课程第21课:从Spark架构中透视Job
- 大数据IMF传奇行动绝密课程第21课:从Spark架构中透视Job
- 大数据IMF传奇行动绝密课程第45课:Spark性能优化第一季
- 大数据IMF传奇行动绝密课程第44课:真正的Spark功力:性能优化!
- 大数据IMF传奇行动绝密课程第53课:Spark性能优化第九季 Spark Tungsten内存使用彻底解密
- 大数据IMF传奇行动绝密课程第32课:Spark Worker原理和源码剖析解密
- 大数据IMF传奇行动绝密课程第12课:HA下的Spark集群工作原理解密
- 大数据IMF传奇行动绝密课程第49课:Spark性能优化第五季
- 大数据IMF传奇行动绝密课程第54课:Spark性能优化第十季之Spark统一内存管理
- 大数据IMF传奇行动绝密课程第52课:Spark性能优化第八季
- 大数据IMF传奇行动绝密课程第26课:Spark Runtime内幕揭秘
- 大数据IMF传奇行动绝密课程第25课:Spark Sort-Based Shuffle内幕彻底解密
- 大数据IMF传奇行动绝密课程第51课:Spark性能优化第七季
- 大数据IMF传奇行动绝密课程第26课:Spark Runtime内幕揭秘
- 大数据IMF传奇行动绝密课程第47课:Spark性能优化第三季
- 大数据IMF传奇行动绝密课程第43课:Spark 1.6 Rpc内幕解密
- 大数据IMF传奇行动绝密课程第13课:Spark内核架构解密
- 大数据IMF传奇行动绝密课程第48课:Spark性能优化第四季
- 大数据IMF传奇行动绝密课程第31课:Spark资源调度分配内幕天机彻底解密