Spark Job具体的物理执行
即使采用pipeline的方式,函数f对依赖的RDD中的数据集合的操作也会有两种方式:
1.f(record),f作用于集合的每一条记录,每次只作用于一条记录
2.f(records),f一次性作用于集合的全部数据;
Spark采用的是第一种方式,因为:
1.无需等待,可以最大化的使用集群的计算资源
2.减少OOM的产生
3.最大化的有利于并发
4.可以精准的控制每一个Partition本身(Dependency)及其内部的计算(compute)
5.基于lineage的算子流动式函数式计算,可以节省中间结果的产生,可以最快的恢复
不会产生网络流量,因为用的是pipeline。
--------------------------------------------------------------------------------------------------------------------------------------------------------------
物理执行过程
Spark Application里面可以产生1个或者多个job,例如spark-shell默认启动时,内部就没有job,只是作为资源的分配程序,可以在里面写代码产生多个Job,普通程序一般而言,可以有不用的Action,每一个Action一般也会触发一个Job。
Spark是MapReduce思想的一种更加精致和高效的实现,MapReduce有很多不同的具体实现,例如Hadoop的MapReduce基本的计算流程,如下:首先是并发,以JVM为对象的并发Mapper,Mapper中的map的执行会产生输出数据,输出的数据会经由Partitioner指定的规则,放到localFileSystem中,然后再经由Shuffle、Sort、Aggregate变成reducer中的Reduce的输入,执行reduce产生最终的执行结果。hadoop MapReduce执行的流程虽然简单,但是过于死板,尤其是构造复杂算法(迭代)时候,非常不利于算法的实现,且执行效率极为低下。
Spark执行时,物理算法构造和物理执行时,最基本的核心:最大化pipeline
基于pipeline的思想,数据被使用的时候才开始计算,从数据流动的视角来说,是数据流动到计算的位置。实质上,从逻辑的角度来看,是算子在数据上流动。
从算法构建的角度而言,是算子作用于数据,所以是算子在数据上流动。方便算法的构建。
从物理执行的角度而言,是数据流动到计算的位置。方便系统更加高效的运行。
对于pipeline而言,数据计算的位置就是每个Stage中最后的RDD,每个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中的所有的Record计算完毕,才整体完后流动数据进行计算。这极大地提高了计算速率。
--------------------------------------------------------------------------------------------------------------------------------------------------------------
宽依赖的物理执行
必须等到依赖的父Stage中的最后一个RDD把全部数据彻底计算完毕,才能够经过shuffle来计算当前的Stage。
Spark Job具体的物理执行的更多相关文章
- 从物理执行的角度透视spark Job
本博文主要内容: 1.再次思考pipeline 2.窄依赖物理执行内幕 3.宽依赖物理执行内幕 4.Job提交流程 一:再次思考pipeline 即使采用pipeline的方式,函数f对依赖的RDD中 ...
- Spark 概念学习系列之从物理执行的角度透视spark Job(十七)
本博文主要内容: 1.再次思考pipeline 2.窄依赖物理执行内幕 3.宽依赖物理执行内幕 4.Job提交流程 一:再次思考pipeline 即使采用pipeline的方式,函数f对依赖的RDD ...
- 一个 Spark 应用程序的完整执行流程
一个 Spark 应用程序的完整执行流程 1.编写 Spark Application 应用程序 2.打 jar 包,通过 spark-submit 提交执行 3.SparkSubmit 提交执行 4 ...
- Spark(五)Spark任务提交方式和执行流程
一.Spark中的基本概念 (1)Application:表示你的应用程序 (2)Driver:表示main()函数,创建SparkContext.由SparkContext负责与ClusterMan ...
- Spark的任务提交和执行流程概述
1.概述 为了更好地理解调度,我们先看一下集群模式的Spark程序运行架构图,如上所示: 2.Spark中的基本概念 1.Application:表示你的程序 2.Driver:表示main函数,创建 ...
- Spark(五) -- Spark Streaming介绍与基本执行过程
Spark Streaming作为Spark上的四大子框架之一,肩负着实时流计算的重大责任 而相对于另外一个当下十分流行的实时流计算处理框架Storm,Spark Streaming有何优点?又有何不 ...
- spark通过合理设置spark.default.parallelism参数提高执行效率
spark中有partition的概念(和slice是同一个概念,在spark1.2中官网已经做出了说明),一般每个partition对应一个task.在我的测试过程中,如果没有设置spark.def ...
- spark编译与onyarn的执行
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u014393917/article/details/24640715 Spark on yarn执行 ...
- Spark集群和任务执行
[前言:承接<Spark通识>篇] Spark集群组件 Spark是典型的Master/Slave架构,集群主要包括以下4个组件: Driver:Spark框架中的驱动器,运行用户编写Ap ...
随机推荐
- 牛客想开了大赛2 A-【六】平面(切平面)
A-[六]平面 链接:https://ac.nowcoder.com/acm/contest/907/A?&headNav=acm来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限 ...
- John 尼姆博弈
John Little John is playing very funny game with his younger brother. There is one big box filled wi ...
- 网络编程demo之Udp和URL
首先是udp编程客户端发送消息给服务端,服务端接受然后打印到console控制台上 下面是一个有代表性的demo package com.henu.liulei; import java.io.IOE ...
- unity 代码添加AnimationEvent
经过测试只要Animator跟继承monoBehaviour的类A在同一个节点上,就可以注册类A中的public 方法,含0或1个参数(int,float,object,string),注意:只能是0 ...
- Solr 6.7学习笔记(06)-- spell check
拼写检查也是搜索引擎必备的功能.Solr中提供了SpellCheckComponent 来实现此功能.我看过<Solr In Action>,是基于Solr4.X版本的,那时Suggest ...
- CSS揭秘—打字动效(四)
前言: 所有实例均来自<CSS揭秘>,该书以平时遇到的疑难杂症为引,提供解决方法,只能说秒极了,再一次刷新了我对CSS的认知 该书只提供了关键CSS代码,虽然有在线示例代码链接,但 ...
- std::less
std::less 定义于头文件 <functional> template< class T >struct less; (C++14 前) template ...
- 封装了一个电商放大镜移入放大的功能,适用于VUE
代码地址:https://github.com/zhongqiulan/jqimgzoom 由于vue只支持ie9以上版本,所以这个插件也是一样的 效果图: 第一步,在goodsinfo文件中引入cs ...
- LOJ 2288「THUWC 2017」大葱的神力
LOJ 2288「THUWC 2017」大葱的神力 Link Solution 比较水的提交答案题了吧 第一个点爆搜 第二个点爆搜+剪枝,我的剪枝就是先算出 \(mx[i]\) 表示选取第 \(i \ ...
- BZOJ 1123 && Luogu P3469 [POI2008]BLO-Blockade 割点+乘法原理
想了半天式子...最后在邓大师的帮助下想出此题....QWQ我还是太菜了 对于一个非割点,ans+=2*(n-1); 对于一个割点,ans+= #include<cstdio> #incl ...