oracle 与 client端执行结果不一致_不同模式下Spark应用的执行过程
根据应用执行的3个阶段,不同执行模式下各个阶段的执行逻辑不相同,本文分析不同模式下的执行逻辑。
Yarn-Client模式的执行流程
Yarn的组成
Yarn是hadoop自带的资源管理框架,它的设计思想是:YARN的基本思想是将资源管理和作业调度/监视的功能拆分为单独的守护程序。这个想法是拥有一个全局ResourceManager(RM)和每个应用程序ApplicationMaster(AM)。应用程序可以是单个作业,也可以是作业的DAG。
ResourceManager和NodeManager组成数据计算框架。ResourceManager是在系统中所有应用程序之间仲裁资源的最终权限。NodeManager是每台机器的框架代理,负责容器,监视其资源使用情况(cpu,内存,磁盘,网络),并将其报告给ResourceManager / Scheduler。
每个应用程序ApplicationMaster实际上是框架特定的库,其任务是与来自ResourceManager的资源进行协商,并与NodeManager一起执行和监视任务。

Yarn-Client模式下Spark应用的执行流程
Yarn-Client模式下,Driver端会在Client端独立执行,而不像Yarn-Cluster模式会在ApplicationMaster中执行。所以,在Yarn-Client模式下能够观察Driver端的运行,查看Driver端的运行日志。
Yarn-Client模式提交Spark应用的命令类似于:
$SPARK_HOME/bin/spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples*.jar
在Yarn-Client模式下,Spark应用的执行总体流程如图2所示。

1.客户端提交Spark应用,在提交应用时会先找到Spark应用的执行主类,例如:若是Scala或Java应用,Yarn-Client模式下的执行主类是--class指定的类名。然后,进入主类的main函数开始执行应用。此时,一般会开始创建SparkSession(包括SparkContext和SparkEnv对象),在创建SparkContext时会和ResourceManager进行通信。
2.ResourceManager启动一个Container并在该Container中运行ApplicationMaster。
3.ApplicationMaster根据应用的资源配置来向ResourceManager申请分配一个或多个新的Container,一旦Container被分配就在Container中启动Executors。
4.Driver端直接和Executor进行通信,先把Spark应用程序转换成Task,然后把Task提交给Executor端执行。Executor向Driver端返回执行进度,执行状态,执行完成后返回执行结果。
Yarn-Cluster模式的执行流程
Yarn-Cluster模式下,Driver端会运行在ApplicationMaster的容器中,所以,Yarn-Cluster模式下在Client端不能观察到Driver的运行情况,Driver端的日志也只能在YARN中查看。
Yarn-Cluster模式提交Spark应用的命令如下:
$SPARK_HOME/bin/spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi $SPARK_HOME/examples/jars/spark-examples*.jar
Yarn-Cluster模式的Spark应用执行过程如图3所示:

1.客户端提交Spark应用,在提交应用时会先找到Spark应用的执行主类,例如:若是Scala或Java应用,Yarn-Cluster模式下的执行主类org.apache.spark.deploy.yarn.YarnClusterApplication。
然后,进入主类的main函数开始执行应用。此时,一般会开始创建SparkSession(包括SparkContext和SparkEnv对象),在创建SparkContext时会和ResourceManager进行通信。
2.ResourceManager为应用分配一个ApplicationMaster的Container。此时,Driver进程也在该容器中启动。
3.ApplicationMaster向ResourceManager为Executor请求创建容器(container)。当容器创建完成时,就会在该容器中启动Executor。然后Driver直接和Executor进行交流,先把Spark应用程序转换成Task,然后把Task提交给Executor端执行。
4.Executor向Driver端返回执行进度,执行状态,执行完成后返回执行结果。
可以通过SparkUI来查看Yarn-Cluster的Spark应用的执行状态。在Yarn的任务列表中,进入ApplicationMaster的页面,可以查看Spark应用执行的进度日志。
Standalone模式下应用的执行
Standalone的架构和组成
在执行Spark任务前,我们必须启动Standalone资源管理框架,具体的启动和使用方法,见后面的“启动和使用”小节。由于Standalone是由Master和Worker两个部分组成,所以,我们需要先启动Master和Worker服务。
Standalone资源管理框架的架构如图4所示:

从图1-5-1可以看出,Standalone的资源管理框架是一master多slave的分布式架构,master服务可以通过zookeeper等组件来保证高可用(后面有专门的章节讲解)。
若和第1.1章节的通用Spark架构进行类比,Standalone模式下的Standalone Master服务,就是Cluster Manager的角色,而Standalone Worker就是worker的角色。
Standalone Master负责:管理Standalone Worker,接受任务提交请求,为任务分配资源等工作;而Standalone Worker负责:启动Executor,运行Task等工作。Spark应用执行时,架构如图1-5-2所示:

Standalone模式下Spark应用的执行流程
在Standalone模式下执行Spark应用的过程如下:
1.启动Standalone资源管理框架,包括Standalone Master和Standalone Worker;
2.在Driver端指定使用Standalone模式来执行Spark应用,开始进行Task执行环境初始化。
3.Task执行环境的初始化在创建SparkContext时完成,此时,Spark应用连接Standalone Master,向其申请资源,若资源足够,则根据资源配置在Worker端启动指定数量的Executor,并启动和初始化Executor端的各种服务,包括:数据传输服务,内存管理服务。Executor会直接和Driver端通信,把状态信息汇报给Driver端。
4.若一切顺利SparkContext创建完成时,Task的执行环境就准备好了(各个Executor已经创建好,各个必要的服务也已经启动),Driver端接下来开始执行应用程序的Spark数据处理代码,它会对数据处理的过程进行编排,调度,最终形成TaskSet提交给Executor。
5.Executor通过线程池来运行Task,在执行过程中会把状态信息直接返回给Driver端,完成后把结果返回给Driver端。
小结
本文对不同模式下Spark应用的执行过程进行了分析。这并没有对Local模式的执行过程进行分析,会在后面的文章中进行单独分析。
相关文章:

分享EOS加拿大的文章《REX——从源代码做技术解析》
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 已提议将丢失密钥恢复系统部署到EOS主网。 丢失密钥解决方案的最后一步已经在链上提出。最后一步是将丢失密钥解决方案智能合约部署到为此目的创建…

16.QT鼠标
头文件 1 #include <QMouseEvent> 2 #include <QStatusBar> 3 #include <QLabel> 1 protected: 2 //鼠标按下 3 void mousePressEvent(QMouseEvent *e); 4 //鼠标移动 5 void mouseMoveEvent(QMouseEvent *e); 6 //鼠标释放 7 void …

c++ windows获得当前工作目录文件_基于linux下Python文件操作
Python中的文件操作1、文件的打开与关闭想一想:如果想用word编写一份简历,应该有哪些流程呢?1、打开word软件,新建一个word文件2、写入个人简历信息3、保存文件4、关闭word软件同样,在操作文件的整体过程与使用word编写…

maven 插件
maven-enforcer-plugin https://maven.apache.org/enforcer/maven-enforcer-plugin/ https://maven.apache.org/enforcer/maven-enforcer-plugin/enforce-mojo.html http://maven.apache.org/enforcer/enforcer-rules/index.html转载于:https://www.cnblogs.com/SamuelSun/p/58…

数字货币EOS半年时间暴跌90%多,还可追捧吗?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 对财富上的自由,很多人认为这比感情来得容易多了。但是面对这个竞争激烈的社会,是兢兢业业的工作,还是投资房地产…
resnet keras 结构_Wandb用起来,一行Python代码实现Keras模型可视化
大数据文摘出品来源:wandb编译:邢畅、宁静在训练神经网络的过程中,我们可能会希望可视化网络的性能和中间的结构,很多可视化代码的冗长复杂使得我们望而却步,有没有一行代码就能解决可视化的所有问题呢?通过…

tensorflow学习笔记————分类MNIST数据集
在使用tensorflow分类MNIST数据集中,最容易遇到的问题是下载MNIST样本的问题。 一般是通过使用tensorflow内置的函数进行下载和加载, from tensorflow.examples.tutorials.mnist import input_data mnist input_data.read_data_sets("MNIST_data&q…

Build SSCLI20 under VS2008 full Document (完全手册)
以前build过几次sscli2都成功了,这次换了个新的环境,没想到出了一大堆的问题。折腾了半天,最终搞定,把解决问题的过程和方法都记录下来。 首先说说build的过程中参考过的链接和资源。 首先就是sscli自带的文档:Buildin…

vue 发展历程时间轴动画_PPT时间轴如何做出创意感?海量素材免费分享,网友:收藏...
时间轴页面,是工作型PPT中常见的页面之一。个人述职或者公司介绍PPT中,使用时间轴,能够让观众更加清晰地了解公司的发展历程。但是,很多人在制作时间轴页面时,往往是这样的效果:只有几行字和一根线…

[CQOI2014]数三角形 组合数 + 容斥 + gcd
推导过程 : 组合数容斥原理gcd 正确做法是暴力的一种优化,ans所有情况 - 平行坐标轴的三点共线 - 斜线三点共线 如果快速求斜线三点共线: 首先要知道一个结论,对于点(a,b) (x,y)连成的线段而言(其中a>x,b>y), 在…

石子合并[DP-N3]
题目描述 在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分。 试设计出1个算法,计算出将N堆石子合并成1堆的最小得分和最大得分. 输入输出格式 输入格式&…

智能合约智能么?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 近几年,随着区块链、加密货币概念的发展,智能合约也开始被广泛的接受,然而就像最初的人工智能被过度神化一样&…

Codeforces 504 A (Round #285 div.1 A) Misha and Forest
Codeforces Round #285 (Div.1) A Misha and Forest 水题水题水…… 题意:给你一些点,给出他们连通了多少个点以及这些点的下标的异或值,让你找出一个图 题解:拓扑排序一发 代码: #include <iostream> #include <cstdio&…

hashlib模式和hmac模式
hashlib模式 什么叫hash? 一:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash…

asp导出word中文乱码_解决文档打开乱码问题丨小工具系列
问题:手头上有个从Workbench导出的数据表文档打开发现里面的中文是乱码!如图所示:解决方法利用记事本(notepad)将该文档的格式修改为UTF-8,步骤如下点击电脑的开始菜单,点击"所有程序"࿰…

一篇文章让你了解智能合约以及和区块链的关系
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 智能合约是区块链最重要的特性,也是区块链能够被称为颠覆性技术的主要原因,更是各国央行考虑使用区块链技术来发行数字货币的…

我的常用npm命令
npm link gulp node-sass gulp-sass gulp-autoprefixer gulp-sourcemaps gulp-font-spider gulp-concat gulp-uglify gulp-jshint map-stream 转载于:https://www.cnblogs.com/siluo2000/p/8779988.html

pytorch 测试每一类_DeepFM全方面解析(附pytorch源码)
写在前面最近看了DeepFM这个模型。把我学习的思路和总结放上来给大家和未来的自己做个参考和借鉴。文章主要希望能串起学习DeepFM的各个环节,梳理整个学习思路。以“我”的角度浅谈一下DeepFM基础知识看过的一些有用文献最后附上可实现的pytorch代码,用具…

超简单的网页选项卡---jQuery
<!DOCTYPE html><html lang"en"><head> <meta charset"UTF-8"> <title>网页选项卡</title> <script src"jquery-1.4.2.js"></script> <script type"text/javascript"> $(funct…

一篇文章让你了解区块链技术的发展阶段
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链是由一系列技术实现的全新去中心化经济组织模式,2009年诞生于比特币系统的构建,2017年成为全球经济热点,但…

301 Remove Invalid Parentheses 删除无效的括号
删除最小数目的无效括号,使输入的字符串有效,返回所有可能的结果。注意: 输入可能包含了除 ( 和 ) 以外的元素。示例 :"()())()" -> ["()()()", "(())()"]"(a)())()" -> ["(a)()()", "(a(…

python3 列表转字节_Python 3.9!10大新特性值得关注
选自towardsdatascience作者:Farhad Malik机器之心编译编辑:陈萍近日,Python 3.9 发布,并开发了一些新特性,包括字典合并与更新、新的解析器、新的字符串函数等。Python 3.9 已于 10 月 5 日发布,新版本的特…

HDU4080 Stammering Aliens(二分 + 后缀数组)
题目 Source http://acm.hdu.edu.cn/showproblem.php?pid4080 Description Dr. Ellie Arroway has established contact with an extraterrestrial civilization. However, all efforts to decode their messages have failed so far because, as luck would have it, they ha…

共识机制:区块链技术的根基
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 Chapter-1:什么是共识机制? 技术定义是:共识机制是一个群体决策的流程,群体中的个体会执…

Web App、Hybrid App与Native App的设计差异
目前主流应用程序大体分为三类:Web App、Hybrid App、 Native App。 一、Web App、Hybrid App、Native App 纵向对比 首先,我们来看看什么是 Web App、Hybrid App、 Native App。 1. Web APP Web App 指采用Html5语言写出的App,不需要下载安装…

输入重定向,输出重定向,管道相关内容及实现方法
近期,通过实现shell了解了输入重定向,输出重定向,管道- 用自己的话总结定义: 输入重定向:把<右边的文件的内容输入到<左边的命令中。 输出重定向:把运行>左边命令得出的结果输入到>右边的文件中…

appium+python自动化测试教程_Python+Appium实现自动化测试
一、环境准备 1.脚本语言:Python3.x IDE:安装Pycharm 2.安装Java JDK 、Android SDK 3.adb环境,path添加E:\Software\Android_SDK\platform-tools 4.安装Appium for windows,官网地址 http://appium.io/点击下载按钮会到GitHub的下…

区块链热度飙升 BAT抢先布局话语权争夺战开打
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 今年以来,在互联网金融相对沉寂之后,区块链已当仁不让成为科技领域的主角。区块链作为一项突破性的新技术,如同当…

【CV知识学习】early stop、regularation、fine-tuning and some other trick to be known
深度学习有不少的trick,而且这些trick有时还挺管用的,所以,了解一些trick还是必要的。上篇说的normalization、initialization就是trick的一种,下面再总结一下自己看Deep Learning Summer School, Montreal 2016 总结的一些trick。…

etw系统provider事件较多_【Flutter 实战】文件系统目录
老孟导读:Flutter 中获取文件路径,我们都知道使用 path_provider,但对其目录对含义不是很清楚,此文介绍 Android、iOS 系统的文件目录,不同场景下建议使用的目录。 不同的平台对应的文件系统是不同的,比如文…