Flink:配置基于yarn的JobManager 高可用

前言

JobManager 用于协调每个Flink任务的调度和资源管理。默认情况下,每个Flink集群只有一个JobManager实例。那么就意味着存在单点故障。如果JobManager崩溃,就不能提交新的任务,且运行中的任务也会失败。

JobManager 高可用可以在JobManager挂掉后,恢复JobManager,从而消除单点故障。

Flink独立部署和部署在Yarn上都可以使用JobManager高可用,生产环境中大多是部署在yarn上的。

基于Yarn的JobManager高可用任然只运行一个JobManager(ApplicationMaster)实例,但是当这个JobManager崩溃后,Yarn会重新启动JobManager。

配置

Flink的高可用需要依赖zookeeper,在配置前先安装zookeeper。除此之外仅需修改两处配置文件:yarn-site.xml和flink-conf.yaml。

1.配置yarn-site.xml,添加如下配置。

<property>
  <name>yarn.resourcemanager.am.max-attempts</name>
  <value>10</value>
  <description>
    application master 最大的执行次数.
    默认值是2(表示可以容忍JobManager发生一次故障)
  </description>
</property>

2.配置flink-conf.yaml

应用尝试启动的次数,10表示可以重启9次(重启9次+初始启动1次),当10次启动都失败时,yarn才会认为这个任务失败。需要注意的是,此处配置的上限是yarn.resourcemanager.am.max-attempts,即最大不能超过上面配置的10.如果需要调高此处参数,则连同yarn.resourcemanager.am.max-attempts也需要调高。

high-availability:zookeeper
high-availability.zookeeper.quorum: hd01:2181,hd02:2181,hd03:2181
high-availability.storageDir: hdfs:///flink/recovery
high-availability.zookeeper.path.root: /flink
yarn.application-attempts: 10

3.启动yarn-session

yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 -nm test -d

注意

不同版本的Yarn在任务发生错误后,在关闭Container 时采用不同的方式。

YARN 2.3.0 < version < 2.4.0:当application master失败时,所有的Container都将重启。

YARN 2.4.0 < version < 2.6.0:当application master失败时,TaskManager containers仍会保持存活状态,这样做的好处是启动时间更快,并且不必等待再次获得容器资源。

YARN 2.6.0 <= version:在2.4-2.6的基础上,设置了一个间隔时间,这个间隔时间的值等于Flinks’ Akka timeout value,当任务发生错误后,会以这个时间间隔来重启任务,当重试次数超过Flink设置的yarn.application-attempts值时,任务才会被系统kill。这样可以避免一个长时间失败的任务耗尽application的尝试重启次数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值