Flink on Yarn两种运行模式详解

简介: 在一个企业中,为了最大化的利用集群资源,一般都会在一个集群中同时运行多种类型的Workload,因此 Flink 也支持在 Yarn 集群运行。

1.为什么使用Flink On Yarn?

当Flink on YARN 运行时,有如下特点:

  • 1)、JobManager 进程和 TaskManager 进程都由 Yarn NodeManager 监控;

JobManager和TaskManager都是运行NodeManager容器Contanier中

  • 2)、如果 JobManager 进程异常退出,则 Yarn ResourceManager 会重新调度 JobManager到其他机器;
  • 3)、如果 TaskManager 进程异常退出,JobManager 会收到消息并重新向 YarnResourceManager 申请资源,重新启动 TaskManager;

Flink如何与Yarn进行交互:(面试必备)
在这里插入图片描述

  • 1)、Client上传jar包和配置文件到HDFS集群上;
  • 2)、Client向Yarn ResourceManager提交任务并申请资源;
    • Flink Client上传完成jar包和配置文件以后,再向RM提交任务;此时RM,在NodeManager上启动容器,运行JobManager(进程),此时相当于AppMaster。
  • 3)、ResourceManager分配Container资源并启动ApplicationMaster,然后AppMaster加载Flink的
    Jar包和配置构建环境,启动JobManager;
    • JobManager和ApplicationMaster运行在同一个container上;
    • 一旦他们被成功启动,AppMaster就知道JobManager的地址(AM它自己所在的机器);
    • 它就会为TaskManager生成一个新的Flink配置文件(他们就可以连接到JobManager);这
      个配置文件也被上传到HDFS上;
    • 此外,AppMaster容器也提供了Flink的web服务接口;
    • YARN所分配的所有端口都是临时端口,这允许用户并行执行多个Flink
  • 4)、ApplicationMaster向ResourceManager申请工作资源,NodeManager加载Flink的Jar包和配置
    构建环境并启动TaskManager
  • 5)、TaskManager启动后向JobManager发送心跳包,并等待JobManager向其分配任务

2. Flink on Yarn 的两种运行方式

简介: 当将Flink 程序运行在YARN 集群上时,有2种方式:Sesssion会话模式和Job 分离模式。

Session会话模式:

1: 在yarn上启动一个Flink 会话:  启动过后就可以访问Yarn的WEBUI了

[root@node1 ~]# /export/server/flink/bin/yarn-session.sh -d -jm 1024 -tm 1024 -s 2

JobManager Web Interface: http://node2.itcast.cn:38827
2021-03-03 15:26:23,635 INFO  org.apache.flink.yarn.cli.FlinkYarnSessionCli                 - The Flink YARN session cluster has been started in detached mode. In order to stop Flink gracefully, use the following command:
$ echo "stop" | ./bin/yarn-session.sh -id application_1614756061094_0002
If this should not be possible, then you can also kill Flink via YARN's web interface or via:
$ yarn application -kill application_1614756061094_0002

在这里插入图片描述

2: 使用`flink run`提交任务: 通过YARN任务界面上方的ApplicationMaster可以进入Flink的管理界面

[root@node1 ~]# more /tmp/.yarn-properties-root 
#Generated YARN properties file
#Wed Mar 03 15:26:23 CST 2021
dynamicPropertiesString=
applicationID=application_1614756061094_0002
[root@node1 ~]# 
[root@node1 ~]# 
[root@node1 ~]# /export/server/flink/bin/flink run /export/server/flink/examples/batch/WordCount.jar --input hdfs://node1.itcast.cn:8020/wordcount/input
3: 关闭`yarn-session`

方法1: echo "stop" | /export/server/flink/bin/yarn-session.sh -id application_1614756061094_0002

方法2: yarn application -kill application_1614756061094_0002

Job 分离模式:
每个Flink Job运行在YARN集群上时,都会运行Flink Standalone集群,执行每个Job中Task任务。
在这里插入图片描述

1: Job分离模式: `直接提交job`  

/export/server/flink/bin/flink run \
-m yarn-cluster -yjm 1024 -ytm 1024 \
/export/server/flink/examples/batch/WordCount.jar

统一访问 Yarn集群的webUI界面 8088
在这里插入图片描述
在这里插入图片描述

执行Flink任务时各个参数查看: [root@node1 flink]# bin/flink --help

猜你喜欢

转载自blog.csdn.net/m0_49834705/article/details/114333656