Flink On Yarn

2017/12/22 Flink

Flink On Yarn

Flink 内置了对Yarn的支持,任何使用Flink API的程序不需要太多努力都可以在Yarn上执行,如果有Yarn集群的话,没有必要安装其它组件了。Flink必须要满足下列条件:

  • Hadoop 版本要高于2.2
  • HDFS在运行

配置

为了让Flink运行在Yarn上,需要一定的配置,需要使用兼容Hadoop的Flink版本。

需要的组件下载完毕后就可以开启Flink 会话,Flink 会话会在各自的Node上打开所有的Flink 服务(Job Manager 和 Task Manager ),这样的话, Flink Job可以运行了。启动Yarn 会话的过程中,必须要设置YARN_CONF_DIRHADOOP_CONF_DIR两个环境变量,Flink会自己找到配置信息。

./bin/yarn-session.sh

提交Flink作业的过程中,使用./bin/flink来处理就可以了。

直接结束掉Yarn进程。

./bin/flink run -m yarn-cluster -yn 2 ./examples/batch/WordCount.jar

这样的话, 直接运行就可以了,可以通过Yarn application UI 来跟踪任务的执行情况。

Flink On Yarn程序的恢复

Flink On Yarn提供了三种参数来控制Flink程序在Yarn上失败时候对程序的恢复行为。

Paramter Description
yarn.reallocate-failed 配置Flink程序是否自动重新分配失败了的程序,默认值是true
yarn.maximum-failed-containers 设置中止任务前的最大窗口失败次数,默认值初始化过程中task manager 需要的数量
yarn.application-attempts 设置application master重试的次数,默认会值是1,意味着如果application master失败,Yarn会话会失败

这些配置是在conf/flink-conf.yaml文件中配置的,或者也可以使用 -D 参数来设置。

Flink On Yarn执行细节

执行过程如下图所示: 图一

Flink On Yarn程序启动的时候,会经过的流程如下:

  1. 检查Hadoop和Yarn的配置
  2. 如果没有问题,在HDFS上把Jar和配置文件存上去
  3. 和Node Manager通信,给application master分配资源
  4. application master资源分配成功,初始化Flink Job Manager
  5. 通过给定的参数初始化Flink tash mangers 到这一步,就可以在YARN上提交Flink Job了。
Show Disqus Comments

Search

    Table of Contents