yarn spark flink运行架构以及各部分作用

本文详细介绍了Yarn的ResourceManager、NodeManager、ApplicationMaster、Container等组件及其作用,包括队列调度器的工作原理和Yarn作业提交流程。接着探讨了Spark的Drive、Worker、Executor、RDD DAG ClusterManager等概念,以及Flink的JobManager、TaskManager、resourceManager、dispatcher等,并比较了Spark与Flink在概念和处理方法上的差异。
摘要由CSDN通过智能技术生成

Yarn

Yarn架构图

1 ResourceManager

ResourceManager(RM) 单节点 一个进程 管理nodemanager 相当于 namenode管理datanode
控制整个集群 管理应用应用程序向基础计算机资源的分配
RM将各个资源安排给nodeManager
RM与nodeManager一起启动监视他们的基础应用程序
RM与ApplicationMaster一起分配资源
作用:
1 处理客户端请求
2 启动或监控ApplicationMaster
3 监控nodeManager
4 资源分配与调度

2 NodeManager

NodeManager(NM) 管理Yarn集群中的每个节点 提供针对集群中每个节点的服务 跟踪节点健康
作用
1 管理单个节点的资源
2 处理来着RM的命令
3 处理来自AM的命令
定时向RM汇报本节点的资源使用情况和各个container的运行状态

3 ApplicationMaster

提交的每个作业都包含一个AM
作用
1 与RM协商获取资源(用container表示) 并分配给内部任务
2 与NM通信以启动停止任务
3 任务监控与容错 任务失败时 重新为任务申请资源并重启任务

4 Container

作用
是Yarn中的资源抽象 封装了某个节点上的如内存 cpu 磁盘 网络等 当AM向RM申请资源时 RM为AM返回的资源用container表示

5 队列调度器

在Yarn中有三种调速器可以选择:FIFO Scheduler ,Capacity Scheduler,Fair Scheduler。
FIFO 先进先出 先进去先分配资源进行处理 等处理完一个在处理下一个不适合大集群 因为如果一个任务太大 长时间占据资源 导致其他任务无法进行
Fair 公平调度器 各个任务 资源平等(CDH版本默认)
Capacity 容量 每一个可以获得一部分(apache版本默认)

6 Yarn作业提交流程

当用户向yarn中提交一个应用程序后 yarn将分两个阶段 运行该应用程序
第一个阶段 启动ApplicationMaster
第二个阶段由ApplicationMaster创建应用程序 为它申请资源 并监控它的运行过程 直到运行完成

用户向yarn提交应用程序 包括ApplicationMaster程序 启动ApplicationMaster
RM为该程序分配第一个container 并与对应的NM通信 要求它在这个container中启动应用程序的AM

7 web界面

直接点进去 application 是Driver端的日志 executor点进去 每个executor的日志

8 常用命令

# 查看目前正在跑着的任务
yarn application --list

# 杀掉任务
yarn application -kill appId

# 查看任务日志
yarn logs -applicationId  appId

Spark

在这里插入图片描述

1 Drive

每个应用的控制节点
当一个spark应用被提交时 首先需要为这个应用构建基本的运行环境 即由任务控制节点Drive创建一个sparkContext 由sparkContext负责和资源管理器(clusterManager)的通信 以及进行资源的申请 任务的分配和监控 sparkContext会向CM注册并申请运行Executor的资源
CM为Executor分配资源 并启动executor进程 executor运行情况随着心跳发送到CM
SparkContext根据RDD的依赖关系构建DAG图 DAG图提交给DAG调度器(DAG schedule)进行解析 将DAG图分解成多个stage(每个stage都是一个task set) 交给taskSchedule进行处理 Executor向sparkContext申请资源taskSchedule将task分发给executor运行
task在executor运行 把执行结果反馈给taskSchedule -> DAGSchedule

Driver -> sparkContext -> DAG->Stage->task->worker->executor运行task

Application 用户编写的spark应用程序 内含driver功能的代码
Driver 运行application main函数创建sparkContext sparkContext负责和CM进行通信

2 Worker

slave节点

3 Executor

是运行在work 节点上的一个进程 负责运行任务task 并且为应用程序存取数据

4 Task

运行在Executor上的工作单元 广播机制 如果不使用广播 那么有多个Task 就有多少份数据 使用广播 只在executor存一份

RDD DAG ClusterManager

rdd 弹性分布式数据集 内存模型 数据放到RDD中 DAG有向无环图 反映了RDD之间的依赖关系 clusterManager yarn

5 提交方式

spark 提交到yarn有两种方式
yarn-client 用于测试 spark-submit --master yarn --deploy-mode client --class xxx xx.jar
执行流程
客户端driver提交一个application 在客户端启动一个driver进程
driver向rm请求 启动AM
rm随机选择一个nm启动am
am启动后会向rm请求一批container 用于启动executor
rm找到一批nm返回给am 用于启动executor
am向nm发送命令启动executor
executor启动后 driver发送task到executor 执行结果返回给driver
Driver运行在本地 会与yarn集群中的executor进行大量通信

yarn-cluster 用于生产 spark-submit --master yarn-cluster --class
客户端提交application 发送请求到rm 启动am
rm随机选择一台nm启动am(相当于driver)
am 请求rm 一批container用于启动executor
rm返回nm给am
am链接到nm
请求nm启动executor
executor反向注册到am所在的节点driver driver发送task到executor
driver运行在yarn集群中某一台nm中

6 提交脚本参数

yarn-cluster 完整提交脚本

spark-submit --master yarn \ 指定yarn
--deploy-mode cluster \   yarn-cluster 模式 
--queue test \ 				队列
--class sparkTask.class \   启动类
--num-executors 10  \		executor的总数
--executor-memory 3g \		每个executor的内存
--executor-cores 2 \		每个executor的核数
--driver-memory 2g  \		driver内存
--conf spark.app.name="test" \
/home/test/sparkTask.jar 

Flink

在这里插入图片描述

1 JobManager

控制一个应用程序执行的主进程 向rm申请必要的资源也就是taskManager上的插槽slot 将执行图分发到真正运行他们的taskManager上 还会负责中央协调 如checkpoint
jm协调task 做checkpoint 从client接受job和jar等资源

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值