Flink On Yarn 集群原理

Yarn 架构原理 - 总览

Flink On Yarn 集群原理_第1张图片
image.png

Yarn 架构原理- 组件
Yarn 集群中的组件包括:
● ResourceManager (RM):ResourceManager (RM) 负责处理客户端请求、启动/ 监控 ApplicationMaster、监控 NodeManager、资源的分配与调度,包含 Scheduler 和 Applications Manager。
● ApplicationMaster (AM):ApplicationMaster (AM) 运行在 Slave 上,负责数据切分、申请资源和分配、任务监控和容错。
● NodeManager (NM):NodeManager (NM) 运行在 Slave 上,用于单节点资源管理、AM/RM 通信以及汇报状态。
● Container:Container 负责对资源进行抽象,包括内存、CPU、磁盘,网络等资源。

Yarn 原理-交互

Flink On Yarn 集群原理_第2张图片
image.png

以在 Yarn 上运行 MapReduce 任务为例来讲解下 Yarn 架构的交互原理:
● 首先,用户编写 MapReduce 代码后,通过 Client 端进行任务提交。
● ResourceManager 在接收到客户端的请求后,会分配一个 Container 用来启动 ApplicationMaster,并通知 NodeManager 在这个 Container 下启动ApplicationMaster。
● ApplicationMaster 启动后,向 ResourceManager 发起注册请求。接着
ApplicationMaster 向 ResourceManager 申请资源。根据获取到的资源,和相关的 NodeManager 通信,要求其启动程序。
● 一个或者多个 NodeManager 启动 Map/Reduce Task。
● NodeManager 不断汇报 Map/Reduce Task 状态和进展给 Application-
Master。
● 当所有 Map/Reduce Task 都完成时,ApplicationMaster 向 ResourceManager汇报任务完成,并注销自己。

Flink On Yarn PerJob 模式

Flink On Yarn 集群原理_第3张图片
image.png

● 首先 Client 提交 Yarn App,比如 JobGraph 或者 JARs。
● 接下来 Yarn 的 ResourceManager 会申请第一个 Container。这个
Container 通过 Application Master 启动进程,Application Master 里面运行的是 Flink 程序,即 Flink-Yarn ResourceManager 和 JobManager。
● 最后 Flink-Yarn ResourceManager 向 Yarn ResourceManager 申请资
源。当分配到资源后,启动 TaskManager。TaskManager 启动后向 Flink-Yarn ResourceManager 进行注册,注册成功后 JobManager 就会分配具体的任务给 TaskManager 开始执行。

Flink On Yarn Session 模式

Flink On Yarn 集群原理_第4张图片
image.png

在 Per Job 模式中,执行完任务后整个资源就会释放,包括 JobManager、TaskManager 都全部退出。而 Session 模式则不一样,它的 Dispatcher 和 Resource-Manager 是可以复用的。Session 模式下,当 Dispatcher 在收到请求之后,会启动 JobManager(A), 让 JobManager(A) 来完成启动 TaskManager,接着会启动 JobManager(B) 和对应的 TaskManager 的运行。当 A、B 任务运行完成后,资源并不会释放。Session 模式也称为多线程模式,其特点是资源会一直存在
不会释放,多个 JobManager 共享一个 Dispatcher,而且还共享 Flink-YARN ResourceManager

你可能感兴趣的:(Flink On Yarn 集群原理)