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。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
# -p 最大并发度 # -d 后台运行 # -yn 4个TaskManager容器 # -ys 每个TaskManager有8个slot(线程) # -ytm 每个容器内存5G # -ynm 任务名字 # -m yarn集群 flink run \ -d \ -p 32 \ -yn 4 \ -ys 8 \ -ytm 5120 \ -ynm my_flink \ -m yarn-cluster \ my_flink.jar test |
这里启动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
如果文章帮助您解决了工作难题,您可以帮我点击屏幕上的任意广告,或者赞助少量费用来支持我的持续创作,谢谢~

1
1
1