spark on yarn 完全分部署_19.Spark编程模型-运行架构

核心概念:

Application

基于Spark的用户程序,包含了driver程序和集群的executor

Driver Program

运行main函数并且新建SparkContext的程序

Executor

在一个work node上为某应用启动的一个进程,负责运行任务。

Cluster Manager

在集群上获取资源的外部服务,standalone,Mesos,Yarn

Worker node

集群上可以运行应用代码的节点

Task

被送到某个Executor上的工作单元

Job

包含很多任务的并行计算,可以看做是Spark和action

Stage

一个job会被拆成多个任务

Master(standalone):资源管理的主节点(进程)

Cluster Manager:在集群上获取资源的外部服务(例如standalone,Mesos,Yarn )

Worker Node(standalone):资源管理的从节点(进程) 或者说管理本机资源的进程

Application:基于Spark的⽤用户程序,包含了driver程序和运行在集群上的executor程序

Driver Program:用来连接工作进程(Worker)的程序

Executor:是在一个worker进程所管理的节点上为某Application启动的⼀一个进程,该进

程负责运行任务,并且负责将数据存在内存或者磁盘上。每个应⽤用都有各自独⽴立的

executors

Task:被送到某个executor上的工作单元

Job:包含很多任务(Task)的并行计算,可以看做和action对应

Stage:⼀个Job会被拆分很多组任务,每组任务被称为Stage(就像Mapreduce分map task

和reduce task一样)

总结

一个application包含driver和executor,可以包含多个job(由action触发job),每个job可以根据拆成多个stage(根据宽依赖拆分),每个stage又会有一组task,这组task会发到worker node上去运行,运行的时候会启动executor。

stage的task数由stage最后一个task的分区数决定(也是这个stage的并行度)。

每个task的计算逻辑,就是一个pipline(处理数据就跟流水线作业一样)

pipline什么时候落地磁盘?

1.shuffle write阶段

2.如果对某一个RDD执行了持久化。

application组成

a25bd7b94bc12741826249181d489fc8.png

Spark运行架构解析

5f0fb41609c32d3a8d221614ac1b7c49.png

RDD遇到宽依赖时会shuffle,以shuffle为边界划分stage

af7d7f1699010f90d0eda605cb1e0a14.png
104da1496b581be0ee3d4076f2c3fdd6.png

运行过程

SparkContext向集群申请资源,集群分配资源,执行excutor,驱动程序将Spark应用程序的相关代码文件传给excutor,在excutor上启动task,task执行完成之后向driver返回结果或直接写到外面的原生数据里面。

总结就是:

application向集群注册,申请资源,将代码发送到各个节点,在节点上运行各个task

0d26f29a774d7002527c0074aed99a1d.png
24111c2b7af423d342fc9fcf9329d64a.png

DAGScheduler

346a3003aecda19865886e6058bcdba1.png

TaskSchedule

根据运行时间跟最佳位置决定task放到哪个位置运行

620b43e57d2113688c84869968b3a6e2.png
32d8de862bdeb73896b813f6da91fb24.png

集群架构

Local模式

本地模式,默认情况是本地运行模式。

./sbin/spark-submit.sh --master local[4]

3c30b60051db919d63f0320289848ed9.png
de9f0d000d97e1153780efd726820e2e.png

standalone模式

75e895d653c2c597f8bd980267858403.png

standalone详细过程

249d65ace9da010b44109a7eaa82b26c.png

Spark On Yarn架构解析

为什么YARN

共享资源,方便集群管理

回顾基本流程

60818443b3310551f6b39899e52b60d7.png

Yarn cluster

Yarn standalone是0.9之前版本的叫法,1.0开始更名为Yarn cluster

Driver和AM是一起的,client是单独

a371d1da8b16a95a6395ff0fe38a6e7b.png

Spark Driver首选作为一个ApplicationMaseter在Yarn集群中启动,客户端提交给ResourceManger的每个job都会在集群的worker节点上分配一个唯一的AM。

由该AM管理权生命周期的应用。因为Dviver程序在Yarn中运行,所以事先不用启动Spark Master/Client,应用程序的运行结果不能在客户端显示(可以在history server中查看)

a64a89304683244e4e053e17feb96d37.png

Yarn client

client和Driver在一起(运行在本地)AM只用来管理资源。

默认是client模式

94c16f64c6ce66c62be5eb9e345ef65a.png

在yarn-client模式下,Driver运行在client上,通过AM向RM获取资源。本地Driver负责与所有的executor container运行交换,并将结果汇总,结束掉终端,相当于kill掉这个spark应用,一般来说,如果运行结果仅仅返回到terminal的时候需要配置这个。

ee4830a8d6e5901d00d55e9569c99a4e.png

如何选择

运行结果希望终端可看,用client模式

运行结果过大,client看不了,用custer模式

数据存储到hdfs的建议用cluster

补:YARN

1.YARN概述

Apache Hadoop YARn 是一种新的Hadoop资源管理器,它是一个通用的资源管理系统,,可为上层应用提供统一的资源管理和调度

2.Spark on Yarn配置部署

3.Spark on Yarn运行架构解析

4.其他配置和注释事项

Yarn在Hadoop生态中的位置

ddbac415218f4bb5a421e503d3c2601b.png

Yarn产生背景

随着互联网的告诉发展,数据急剧增加,Mapreduce这种基于磁盘的离线计算框架已经不能满足应用要求,从而出现一些新的计算框架,应对各种场景,包括内存计算框架,流式计算框架和迭代计算框架,而MRv1不能支持多种计算框架并存。

YARN基本架构

2dee073a4f867eb8c4799d5b4de04fe4.png

ResouceManager(RM)

ResouceManager负责集群资源的统一管理和调度,承担JobTracker的角色,整个集群只有一个可用状态。

1.处理客户端请求

2.启动或监控ApplicationMaster

3.监控NodeManger

4.资源的分配与调用

NodeManger(NM)

NodeManger管理YARN集群中的每个节点,NodeManger提供针对集群中每个节点的服务,从监督对一个容器的终身管理到监事资源和跟踪节点管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源,NM有以下作用:

1.管理单个节点上的资源

2.处理来自RM的命令

3.处理来自ApplicationMaster的命令

ApplicationMaster(AM)

每个应用有一个,负责应用程序管理。

ApplicationMaster负责协调来自RM的资源,并通过NM监事容器的执行和资源使用(CPU核心,内存),但未来会带来机遇手头任务的新资源类型(比如图形处理单元或专用处理设备),AM有以下作用:

1.负责数据的切分

2.为应用程序申请资源并分配给内部的任务

3.任务的监控与容错

Container

Container是YARN中的资源抽象,它封装了讴歌节点上的多维资源,如内存,磁盘,CPU,网络等,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。YARN会为每个任务分配一个Container,且该任务只能使用该Container的资源,Container有以下作用:

1.对任务运行环境进行抽象,封装CPU,内存,等多维度的资源以及环境变量,启动没拿过来的任务运行的相关信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值