Spark2.2.0中Spark系统架构及任务提交流程是怎样的

本篇文章给大家分享的是有关Spark2.2.0中Spark系统架构及任务提交流程是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

创新互联公司是一家集网站建设,福田企业网站建设,福田品牌网站建设,网站定制,福田网站建设报价,网络营销,网络优化,福田网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

在讲解Spark系统架构之前,先给大家普及一些比较重要的概念 :

术语
描述
Application
Spark的应用程序,包含一个Driver、多个Executor
SparkContxt
spark应用程序入口,负责调度运算资源,协调worker上的executor
Driver程序

运行sark应用程序的main函数,并创建sparkContext

Executor
运行在Worker上的一个进行,负责运行Task
Worker
集群中的计算节点,运行一个或多个Executor
Task
Worker中的一个线程,Executor中的计算单元
Job
SparkContext提交的Action操作,有几个action就会有几个Job,应用程序会有一个、多个job
Stage
每个Job都会划分为多个stage执行,也称TaskSet
RDD
spark的核心,分布式弹性数据集
DAGScheduler
根据Job构建基于stage的DAG,并发送TaskScheduler执行
TaskScheduler
提交Taskset给Woker进行执行,并返回执行结果
Transformations
RDD一种转换类型,返回值还是一个RDD,具有懒加载属性,如果程序全是Transformation,没有Action程序是不会执行的。
Actions
RDD一种转换类型,返回值也是一个RDD,程序只有Action操作才会被触发。

Spark部署模式:

    这里简单说一下,详细部署请自行百度,这个网上资料很多也很全,我这里不在说了: 

运行

运行

模式

描述

local

本地模式

常用于本地开发测试,本地还分为local和local-cluster

standalone

集群模式

典型的Master/Slave模式,Master存在单点故障的,Spark支持Zookeeper来实现HA

On  Yarn

集群模式

运行在Yarn资源管理器框架上,由Yarn负责资源管理,Spark负责任务调度和计算

On Mesos

集群模式

运行在 mesos资源管理器框架上,由mesos负责资源管理,Spark负责任务调度和计算

On  cloud

集群模式

比如AWS的EMR,使用这个模式能很方便地访问Amazon的S3;Spark支持多种分布式存储系统,hdfs,S3,hbase等

    Spark是一个基于内存的分布式并行处理框架,有几个关键字:分布式、基于内存、并行处理,因此学习它要学习它的分布式架构以及它实现高速并行计算的机理,下面是spark的任务执行架构图,整体划分为以下几部分:

一、Client客户端:负责任务的提交,执行提交命令,指定任务MainClass、资源需求、参数配置等;在yarn/standalone-client模式下,客户端提交程序后,Client新建一个Driver程序,这个client的作用持续到spark程序运行完毕,而yarn/standalone-cluster模式下,客户端提交程序后就不再发挥任何作用,也就是说仅仅发挥了提交程序包的作用。

二、Driver:主要是对SparkContext进行配置、初始化以及关闭。初始化SparkContext是为了构建Spark应用程序的运行环境,在初始化SparkContext,要先导入一些Spark的类和隐式转换;在Executor部分运行完毕后,需要将SparkContext关闭。

三、ClusterManager:负责接收任务的请求,分配计算资源、完成资源调度,一般采用FIFO策略;Driver向ClusterManager提交资源申请,ClusterManager结合任务资源需求和自身资源可用量,从Worker分配资源,并负责告知Driver资源分配结果,Driver接收到ClusterManager响应后发送Task到Worker执行,Worker通过心跳机制向ClusterManager汇报自己的资源和运行情况。

四、Executor:运行在worker节点上的一个进程,该进程负责运行某些Task, 并且负责将数据存到内存或磁盘上,每个Application都有各自独立的一批Executor,在Spark on Yarn模式下,其进程名称为CoarseGrainedExecutor Backend。一个CoarseGrainedExecutor Backend有且仅有一个Executor对象, 负责将Task包装成taskRunner,并从线程池中抽取一个空闲线程运行Task, 这个每一个CoarseGrainedExecutor Backend能并行运行Task的数量取决于分配给它的cpu个数。

Spark2.2.0中Spark系统架构及任务提交流程是怎样的

任务提交流程(这里以yarn-cluster模式讲解):

    1.客户端一般通过spark-submit方式提交作业到Yarn集群,直接去找的是ResourceManager(RM),然后RM分配一个Worker创建Appmaster,由AppMaster去启动Driver;

    2.在Driver中运行我们提交的main函数,创建SparkContext,根据我们的Spark代码,并生成RDD的逻辑执行计划DAG,SparkContext会生成生成一批批的task,然后等待发送的Worker去执行;

    3.AppMaster去向RM申请资源,RM会启动一批Executor,这些Executor会一直存在,等待Task任务到来,执行Task,直到整个任务结束,Executor的数量在整个任务执行过程中是一直不变的;最后RM将资源分配信息发送给Driver端;

    4. Driver收到RM的响应后,将任务的jar发送到对应的Executor上去执行,这里执行顺序是按照RDD的DAG一批批的去执行对应的Task;在同一Stage每个Task执行相同的代码,但是处理的数据是不同的(这也是RDD中分布式的特性);

注意:

    上面任务提交流程是yarn-cluster模式,这里再强调一次,1.standalone/yarn-client模式:Driver运行在Client;

2.standalone/yarn-cluster模式:Driver是运行在集群的一个Worker上。

相关知识:

Spark的核心组件:包括RDD、Scheduler、Storage、Shuffle四部分:

   1.RDD是Spark最核心最精髓的部分,spark将所有数据都抽象成RDD。

   2.Scheduler是Spark的调度机制,分为DAGScheduler和TaskScheduler。

   3.Storage模块主要管理缓存后的RDD、shuffle中间结果数据和broadcast数据。

    4.Shuffle分为Hash方式和Sort方式,两种方式的shuffle中间数据都写本地磁盘。

以上就是Spark2.2.0中Spark系统架构及任务提交流程是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注创新互联行业资讯频道。


当前标题:Spark2.2.0中Spark系统架构及任务提交流程是怎样的
分享网址:http://scyanting.com/article/ppoghd.html