4.Yarn模式高可用配置

1,442 阅读3分钟

1.Yarn模式下的高可用配置

1.1 yarn session方式中的JobManager HA

1.1.1 说明
针对于session方式才有JobManager的HA
因为Flink集群启动后一直驻留在yarn中,针对于JobManager进程,需要其HA,否则集群没有leader,就瘫痪了
per job方式,不需要配置JobManager的HA,内部复用的是standalone JobManager 进程的HA
1.1.2 思路梳理
1.修改hadoop配置文件yarn-site.xml,添加如下的配置信息
<property>
    <name>yarn.resourcemanager.am.max-attempts</name>
    <value>4</value>
</property>

2.将该配置文件分发到其它节点

3.修改flink配置文件flink-conf.yaml
注意点: 将flink-conf.yaml备份一个(之前配置好了standalone HA)

high-availability: zookeeper
high-availability.storageDir: hdfs://node01:9000/flink/ha-yarn
high-availability.zookeeper.quorum: node01:2181,node02:2181,node03:2181
high-availability.zookeeper.path.root: /flink-yarn
yarn.application-attempts: 4

4.启动hadoop分布式集群
5.启动yarn-session
6.验证JobManager进程的HA
  该进程的名称是: YarnSessionClusterEntrypoint
  正常的场合: 在相应的节点上kill掉该进程,会在别的节点上重启
1.1.3 实操
1.1.3.1 修改hadoop配置文件 yarn-site.xml
[robin@node01 ~]$ vim /opt/module/hadoop-2.7.2/etc/hadoop/yarn-site.xml 
<property>
        <name>yarn.resourcemanager.am.max-attempts</name>
        <value>4</value>
</property>
1.1.3.2 同步到其它节点
1.1.3.3 修改flink的配置文件flink-conf.yaml,并进行同步
high-availability.storageDir: hdfs://node01:9000/flink/ha-yarn
high-availability.zookeeper.quorum: node01:2181,node02:2181,node03:2181
high-availability.zookeeper.path.root: /flink-yarn
yarn.application-attempts: 4
1.1.3.4 启动hadoop分布式集群
1.1.3.5 启动yarn-session
[robin@node01 flink]$ yarn-session.sh -n 2 -s 2 -jm 1024 -tm 1024 -nm test -d

2020-03-21 22:25:39,138 INFO  org.apache.flink.shaded.curator.org.apache.curator.framework.state.ConnectionStateManager  - State change: CONNECTED
2020-03-21 22:25:39,555 INFO  org.apache.flink.runtime.rest.RestClient                      - Rest client endpoint started.
Flink JobManager is now running on node03:49388 with leader id 27853502-9b2f-4876-8487-805802ddec41.
JobManager Web Interface: http://node03:44969
2020-03-21 22:25:39,720 INFO  org.apache.flink.yarn.cli.FlinkYarnSessionCli                 - The Flink YARN client has been started in detached mode. In order to stop Flink on YARN, use the following command or a YARN web interface to stop it:
yarn application -kill application_1584800502606_0001
1.1.3.6 验证JobManager进程的HA

验证之前


kill掉进程

在其他节点观察进程是否重启了

2. Flink on yarn的两种运行方式总结

per-job方式:
每个flink job都会开启一个flink集群,运行完毕之后flink集群就会释放
独享Dispatcher和ResourceManager,运行的时候需要多少资源就主动向ResourceManager申请多少资源,适合执行时间较长的大作业
session方式:
所有的flink job都运行同一个flink集群中,flink 集群一直驻留在yarn中
共享Dispatcher和ResourceManager,适合规模小,执行时间短的作业

3. 并行度的设置方式

有四种方式:
方式1: 配置文件flink-conf.yaml
方式2: 命令行参数方式 flink run -p 并行度
方式3: 代码方式之全局设定 env.setParallelism(1)
方式4: 代码方式之局部设定 xx.sum(1).setParallelism(2)

优先级:
代码方式之局部设定 > 代码方式之全局设定 > 命令行参数方式 > 配置文件