大数据开发:Flink on Yarn原理

2021-01-06 10:37:56 浏览数 (1)

在流计算越来越受到重视的大趋势下,Flink框架受到的关注和重视,可以说是与日俱增,在大数据的学习当中,Flink也成为重要的一块。今天的大数据开发分享,我们主要来讲讲,Flink on Yarn原理。

Yarn架构原理

Yarn模式在国内使用比较广泛,基本上大多数公司在生产环境中都使用过Yarn模式。

Yarn的架构原理如下图所示,最重要的角色是ResourceManager,主要用来负责整个资源的管理,Client端是负责向ResourceManager提交任务。

用户在Client端提交任务后会先给到Resource Manager。Resource Manager会启动Container,接着进一步启动Application Master,即对Master节点的启动。当Master节点启动之后,会向Resource Manager再重新申请资源,当Resource Manager将资源分配给Application Master之后,Application Master再将具体的Task调度起来去执行。

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组件运行交互

以在Yarn上运行MapReduce任务为例来讲解下Yarn架构的交互原理:

首先,用户编写MapReduce代码后,通过Client端进行任务提交。

ResourceManager在接收到客户端的请求后,会分配一个Container用来启动ApplicationMaster,并通知NodeManager在这个Container下启动ApplicationMaster。

ApplicationMaster启动后,向ResourceManager发起注册请求。接着ApplicationMaster向ResourceManager申请资源。根据获取到的资源,和相关的NodeManager通信,要求其启动程序。

一个或者多个NodeManager启动Map/Reduce Task。

NodeManager不断汇报Map/Reduce Task状态和进展给ApplicationMaster。

当所有Map/Reduce Task都完成时,ApplicationMaster向ResourceManager汇报任务完成,并注销自己。

Flink on Yarn–Per Job

Flink on Yarn中的Per Job模式是指每次提交一个任务,然后任务运行完成之后资源就会被释放。在了解了Yarn的原理之后,Per Job的流程也就比较容易理解了,具体如下:

首先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原理,以上就为大家做了简单的介绍了。大数据在快速发展当中,相关的技术框架也在持续更新迭代,作为大数据开发者,也要能够跟得上技术趋势才行。

0 人点赞