FlinkサービスのHA構成


デフォルトでは、各FlinkクラスターにはJobManagerが1つしかないため、単一障害点(SPOF)が発生します。このJobManagerが失敗すると、新しいタスクを送信できず、実行中のプログラムも失敗します。JobManager HAを使用すると、クラスターはJobManagerの障害から回復できるため、単一障害点を回避できます。ユーザーは、スタンドアロンまたはFlink on YarnクラスターモードでFlinkクラスターHA(高可用性)を構成できます。
FlinkのHAにはZookeeperとHDFSが必要なので、最初にzkとhdfsをインストールして起動します。

スタンドアロンモードHA

スタンドアロンモードでは、JobManagerの高可用性の基本的な考え方は、いつでも1つのAliveJobManagerと複数のスタンバイJobManagerが存在するということです。スタンバイJobManagerはクラスターを引き継ぎ、AliveJobManagerがハングしたときにAliveJobManagerになることができます。これにより、単一障害点が回避されます。StandbyJobManagerがクラスターを引き継ぐと、プログラムは実行を継続できます。スタンバイJobManagerとアライブJobManagerインスタンスの間に明確な区別はありません。各JobManagerはアライブまたはスタンバイになることができます。構成手順は次のとおりです。


次のように、マスター構成ファイルを変更して、マスターノード構成追加します。

[root@server01 conf]# vi masters
server01:8081
server02:8081
server03:8081

conf / flink-conf.yamlを変更し
て高可用性関連の構成追加し、次の構成項目を構成します

high-availability: zookeeper

# The path where metadata for master recovery is persisted. While ZooKeeper stores
# the small ground truth for checkpoint and leader election, this location stores
# the larger objects, like persisted dataflow graphs.
#
# Must be a durable file system that is accessible from all nodes
# (like HDFS, S3, Ceph, nfs, ...)
#
high-availability.storageDir: hdfs://server01:9000/flink/ha

# The list of ZooKeeper quorum peers that coordinate the high-availability
# setup. This must be a list of the form:
# "host1:clientPort,host2:clientPort,..." (default clientPort: 2181)
#
high-availability.zookeeper.quorum: server03:2181

変更した構成ファイルを他のFlinkノードにコピーします

root@server01 conf]# scp masters root@server03:/opt/apps/flink/conf
root@server01 conf]# scp masters root@server02:/opt/apps/flink/conf
root@server01 conf]# scp flink-conf.yaml root@server03:/opt/apps/flink/conf
root@server01 conf]# scp flink-conf.yaml root@server02:/opt/apps/flink/conf

クラスターを開始します

[root@server01 flink]# bin/start-cluster.sh 
Starting HA cluster with 3 masters.
Starting standalonesession daemon on host server01.
Starting standalonesession daemon on host server02.
Starting standalonesession daemon on host server03.
Starting taskexecutor daemon on host server01.
Starting taskexecutor daemon on host server02.
Starting taskexecutor daemon on host server03.

糸モードHAで点滅

通常、Yarnに基づいてFlinkプログラムを送信します。これは、yarn-sessionモードまたはyarn-clusterモードのどちらを使用している場合でも、対応するFlinkクラスタープロセス「YarnSessionClusterEntrypoint」が強制終了され、Yarn-ベースのFlinkタスクは失敗します。自動再試行なので、Yarnに基づいてFlinkタスクを実行するには、HAを構築する必要もあります。ここでも、zookeeperを使用して完了する必要があります。


すべてのHadoopノードのyarn-site.xml変更して、すべてのHadoopノードのyarn-site.xmlでのアプリケーション送信の最大試行回数を増やし、次の構成を追加します

<property>
<name>yarn.resourcemanager.am.max-attempts</name>
<value>4</value>
</property>

変更したファイルを他のHadoopノードにコピーします

[root@server01 hadoop]# scp yarn-site.xml  root@server02:/opt/apps/hadoop/etc/hadoop
yarn-site.xml                                                                                100% 1146   414.4KB/s   00:00    
[root@server01 hadoop]# scp yarn-site.xml  root@server03:/opt/apps/hadoop/etc/hadoop
yarn-site.xml                                                                                100% 1146   401.7KB/s   00:00    
[root@server01 hadoop]# 

hdfsとzkを再起動します

flink-conf.yamlの内容を
次のように変更します。

high-availability: zookeeper

# The path where metadata for master recovery is persisted. While ZooKeeper stores
# the small ground truth for checkpoint and leader election, this location stores
# the larger objects, like persisted dataflow graphs.
#
# Must be a durable file system that is accessible from all nodes
# (like HDFS, S3, Ceph, nfs, ...)
#
high-availability.storageDir: hdfs://server01:9000/flink/ha

# The list of ZooKeeper quorum peers that coordinate the high-availability
# setup. This must be a list of the form:
# "host1:clientPort,host2:clientPort,..." (default clientPort: 2181)
#
high-availability.zookeeper.quorum: server03:2181

yarn.application-attempts: 10

起動

[root@server01 conf]# ../bin/yarn-session.sh -n 2
2020-08-21 16:29:04,396 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: jobmanager.rpc.address, server01
2020-08-21 16:29:04,398 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: jobmanager.rpc.port, 6123
2020-08-21 16:29:04,398 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: jobmanager.heap.size, 1024m
2020-08-21 16:29:04,398 INFO  org.apache.flink.configuration.GlobalConfiguration            - Loading configuration property: 
2020-08-21 16:29:37,803 INFO  org.apache.flink.runtime.rest.RestClient                      - Rest client endpoint started.
Flink JobManager is now running on server03:43760 with leader id 0d61bb85-a445-4de1-8095-6316288dee5e.
JobManager Web Interface: http://server03:34306

ヤーンを通して、開始したflinkクラスターを
ここに画像の説明を挿入
確認でき、server03でflinkjobmanagerが開始されていることがわかります。
ここに画像の説明を挿入

対応するノードを入力し、対応する「YarnSessionClusterEntrypoint」プロセスを強制終了します。

[root@server03 zookeeper]# jps
7506 DataNode
7767 QuorumPeerMain
8711 TaskManagerRunner
8760 Jps
7625 NodeManager
8761 Jps
8251 StandaloneSessionClusterEntrypoint
[root@server03 zookeeper]# kill -9 8251
[root@server03 zookeeper]# jps
9057 NodeManager
9475 YarnSessionClusterEntrypoint
7767 QuorumPeerMain
8711 TaskManagerRunner
9577 Jps
8958 DataNode
[root@server03 zookeeper]# kill -9 9475

再試行後も「applicationxxxx_0001」ジョブ情報が引き続き利用可能であることをYarnで確認します
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/zhangxm_qz/article/details/108204917