从物理执行角度透视Spark Job(23)

一、再次思考pipeline

即使采用pipeline的方式,函数f对依赖的RDD中的数据集合的操作也会有两种方式:

1, f(record),f作用于集合的每一条记录,每次只作用于一条记录;

2, f(records),f一次性作用于集合的全部数据;

Spark采用是是第一种方式,原因:

1, 无需等待,可以最大化的使用集群的计算资源;

2, 减少OOM的发生;

3, 最大化的有利于并发;

4, 可以精准的控制每一Partition本身(Dependency)及其内部的计算(compute);

5, 基于lineage的算子流动式函数式编程,节省了中间结果的产生,并且可以最快的恢复;

二:思考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。

由于计算的Lazy特性,导致计算从后往前回溯,形成Computing Chain,导致的结果就是需要首先计算出具体一个Stage内部左侧的RDD中本次计算依赖的Partition

三:窄依赖的物理执行内幕

一个Stage内部的RDD都是窄依赖,窄依赖计算本身是逻辑上看是从Stage内部最左侧的RDD开始立即计算的,根据Computing Chain,数据(Record)从一个计算步骤流动到下一个结算步骤,以此类推,直到计算到Stage内部的最后一个RDD来产生计算结果。

Computing Chain的构建是从后往前回溯构建而成,而实际的物理计算则是让数据从前往后在算子上流动,直到流动到不能再流动位置才开始计算下一个Record。这就导致一个美好的结果:后面的RDD对前面的RDD的依赖虽然是Partition级别的数据集合的依赖,但是并不需要父RDD把Partition中所有的Records计算完毕才整体往后流动数据进行计算,这就极大的提高了计算速率!

四:宽依赖物理执行内幕

必须等到依赖的父Stage中的最后一个RDD全部数据彻底计算完毕,才能够经过shuffle来计算当前的Stage!

备注:

新浪微博:http://www.weibo.com/ilovepains

微信公众号:DT_Spark

时间: 2024-10-08 08:02:08

从物理执行角度透视Spark Job(23)的相关文章

从物理执行的角度透视Spark Job(DT大数据梦工厂)

内容: 1.再次思考pipeline: 2.窄依赖物理执行内幕: 3.宽依赖物理执行内幕: 4.Job提交流程: 物理执行是更深层次的角度. ==========再次思考pipeline ============ 即使采用pipeline的方式,函数f对依赖的RDD中的数据集合的操作也会有两种方式: 1.f(record),f作用于集合的每一条记录,每次只作用于一条记录: 2.f(records), f一次性作用于集合的全部数据: Spark运行的时候用的是第一种方式,为什么呢? 1.无需等待,

Spark Job具体的物理执行

即使采用pipeline的方式,函数f对依赖的RDD中的数据集合的操作也会有两种方式: 1.f(record),f作用于集合的每一条记录,每次只作用于一条记录 2.f(records),f一次性作用于集合的全部数据: Spark采用的是第一种方式,因为: 1.无需等待,可以最大化的使用集群的计算资源 2.减少OOM的产生 3.最大化的有利于并发 4.可以精准的控制每一个Partition本身(Dependency)及其内部的计算(compute) 5.基于lineage的算子流动式函数式计算,可

spark(二):spark架构及物理执行图

上图是一个job的提交流程图,job提交的具体步骤如下 一旦有action,就会触发DagScheduler.runJob来提交任务,主要是先生成逻辑执行图DAG,然后调用 finalStage = newStage() 来划分 stage. new Stage() 的时候会调用 finalRDD 的 getParentStages(): getParentStages() 从 finalRDD 出发,反向 visit 逻辑执行图,遇到 NarrowDependency 就将依赖的 RDD 加入

从.net parallel角度解读spark

对于我这样一个一直工作在.net平台上的developer来讲,Hadoop,Spark,HBase等这些大数据名词比较陌生,对于分布式计算,.net上也有类似的Parallel(我说的不是HDInsight), 这篇文章是我尝试从.net上的Parallel类库的角度去讲述什么是spark. 我们先从C#的一个烂大街的例子(不是Helloworld),统计一篇文章单词出现的频率. 下面C#代码是利用.net Parallel来写的统计单词出现频率. 1 using System; 2 usin

Spark 宏观架构&执行步骤

Spark 使用主从架构,有一个中心协调器和许多分布式worker. 中心协调器被称为driver.Driver 和被称为executor 的大量分布式worker 通信 Driver 运行在它自己的Java 进程,而每个executor 是单独的Java 进程.Driver 和它的所有executor 一起被称为Spark 应用. Spark 应用运行在一组使用被称为集群管理器的外部服务的机器上.注意,Spark 打包了一个内置的集群管理器,叫做Standalong 集群管理器.Spark 也

王家林 大数据Spark超经典视频链接全集[转]

压缩过的大数据Spark蘑菇云行动前置课程视频百度云分享链接 链接:http://pan.baidu.com/s/1cFqjQu SCALA专辑 Scala深入浅出经典视频 链接:http://pan.baidu.com/s/1i4Gh3Xb 密码:25jc DT大数据梦工厂大数据spark蘑菇云Scala语言全集(持续更新中) http://www.tudou.com/plcover/rd3LTMjBpZA/ 1 Spark视频王家林第1课:大数据时代的“黄金”语言Scala 2 Spark视

Spark版本定制第3天:通过案例对SparkStreaming透彻理解之三

本期内容: 1 解密Spark Streaming Job架构和运行机制 2 解密Spark Streaming 容错架构和运行机制 一切不能进行实时流处理的数据都是无效的数据.在流处理时代,SparkStreaming有着强大吸引力,而且发展前景广阔,加之Spark的生态系统,Streaming可以方便调用其他的诸如SQL,MLlib等强大框架,它必将一统天下. Spark Streaming运行时与其说是Spark Core上的一个流式处理框架,不如说是Spark Core上的一个最复杂的应

通过案例对 spark streaming 透彻理解三板斧之三:spark streaming运行机制与架构

本期内容: 1. Spark Streaming Job架构与运行机制 2. Spark Streaming 容错架构与运行机制 事实上时间是不存在的,是由人的感官系统感觉时间的存在而已,是一种虚幻的存在,任何时候宇宙中的事情一直在发生着的. Spark Streaming好比时间,一直遵循其运行机制和架构在不停的在运行,无论你写多或者少的应用程序都跳不出这个范围. 一.   通过案例透视Job执行过程的Spark Streaming机制解析,案例代码如下: import org.apache.

【Spark深入学习 -13】Spark计算引擎剖析

----本节内容------- 1.遗留问题解答 2.Spark核心概念 2.1 RDD及RDD操作 2.2 Transformation和Action 2.3 Spark程序架构 2.4 Spark on Yarn运行流程 2.5 WordCount执行原理 3.Spark计算引擎原理 3.1 Spark内部原理 3.2 生成逻辑执行图 3.3 生成物理执行图 4.Spark Shuffle解析 4.1 Shuffle 简史 4.2  Spark Shuffle ·Shuffle Write