flink on yarn 使用过程

yarn是一个资源管理与调度平台,不仅hadoop跑在上面,flink也可以直接向yarn申请资源并运行上去。

yarn基本架构

yarn也是使用cgroup隔离资源,实现了container。

Resource Manager组件管理集群资源。

Node Manager组件管理1台机器,在上面运行container。

Container是一个具体容器,分配一定的CPU、内存、磁盘资源。

向yarn提交应用

以flink为例,需要实现Application Master组件,并请求ResourceManager来启动一个Container运行它。

Application Master启动后将负责向Resource Manager申请一定的资源,Resource Manager将返回分配到的Node Manager列表给Application Master。

Application Master向Node Manager提交程序,拉起Container运行程序,并定时上报状态给Application Master。

当任务结束后,Application Master向Resource Manager汇报完成,并退出。

具体到flink

flink由JobManager和TaskManager组成。

JobManager负责调度,只需要启动1个,它也就是yarn的Application Master角色。

TaskManager是执行计算的进程,可以启动多个来分担计算任务。

提交任务

我们准备好flink程序的jar包my_flink.jar。

这里启动4个TaskManager,每个TaskManager有8个slot,因此设置并行度是32。

jar包后面可以跟随命令行启动参数。

观察任务

命令行可以确认一下yarn任务创建成功:

yarn application -list

可以显示yarn中运行的任务,找到任务名字my_flink即可。

更好的观察flink的方式就是登录flink web界面,运行在yarn中的Flink,其JobManager也同时是yarn的Application Master角色。

我们需要打开yarn的web管理界面,通过yarn帮我们代理到Flink的web地址。

然后点击Tracking UI列下面的Application Master,即可跳转到经过yarn代理后的Flink管理界面。

点击左侧TaskManager可以看到的确启动了4个来参与计算,每个拥有8个slot。

杀死任务

如果想停止任务,直接向yarn杀死整个任务即可。

yarn application -kill 进程ID

如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~