spark on yarn 完全分布式_Spark2.2.0精通:Spark系统架构、任务提交流程

微信公众号:大数据开发运维架构

关注可了解更多大数据相关的资讯。问题或建议,请公众号留言;

如果您觉得“大数据开发运维架构”对你有帮助,欢迎转发朋友圈

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

29d9703d-8289-468c-a6c2-8a5fffb4f572

Spark部署模式:

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

a08fcd10-f742-430f-bd76-353dd1543221

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个数。

7cc1501df6644ff9a126465a0c356146

任务提交流程(这里以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中间数据都写本地磁盘。

未完待续,由于Spark的涉及到的东西比较多,后面我会分开讲解,后面会专门写一篇文章讲解spark的核心RDD,请后续继续关注,谢谢!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值