首页 >热点 > > 正文

大数据Flink进阶(十六):Flink HA搭建配置

腾讯云 2023-04-10 17:39:38

Flink HA搭建配置

默认情况下,每个Flink集群只有一个JobManager,这将导致单点故障(SPOF,single point of failure),如果这个JobManager挂了,则不能提交新的任务,并且运行中的程序也会失败,这是我们可以对JobManager做高可用(High Availability,简称HA),JobManager HA集群当Active JobManager节点挂掉后可以切换其他Standby JobManager成为主节点,从而避免单点故障。用户可以在Standalone、Flink on Yarn、Flink on K8s集群模式下配置Flink集群HA,Flink on K8s集群模式下的HA将单独在K8s里介绍。

一、Flink基于Standalone HA

Standalone模式下,JobManager的高可用性的基本思想是,任何时候都有一个Alive JobManager和多个Standby JobManager。Standby JobManager可以在Alive JobManager挂掉的情况下接管集群成为Alive JobManager,这样避免了单点故障,一旦某一个Standby JobManager接管集群,程序就可以继续运行。Standby JobManagers和Alive JobManager实例之间没有明确区别,每个JobManager都可以成为Alive或Standby。

1、Standalone HA配置

Standalone集群部署下实现JobManager HA 需要依赖ZooKeeper和HDFS,Zookeeper负责协调JobManger失败后的自动切换,HDFS中存储每个Flink任务的执行流程数据,因此要有一个ZooKeeper集群和Hadoop集群。这里我们选择3台节点作为Flink的JobManger,如下:


【资料图】

节点IP

节点名称

JobManager

TaskManager

192.168.179.4

node1

192.168.179.5

node2

192.168.179.6

node3

以上node1、node2、node3都是JobManager,同时只能有1个JobManager为Active主节点,其他为StandBy备用节点,配置JobManager HA 步骤如下:

所有Flink节点配置hadoop classpath

由于Flink JobManager HA 中需要连接HDFS存储job数据,所以Flink所有节点必须配置hadoop classpath 环境变量,在node1-3所有节点上配置/etc/profile配置环境变量:

#配置/etc/profileexport HADOOP_CLASSPATH=`hadoop classpath`#执行生效source /etc/profile
配置masters文件

需要在所有Flink集群节点上配置$FLINK_HOME/conf/master文件,配置上所有的JobManager节点信息:

#node1,node2,node3节点上配置$FLINK_HOME/conf/master文件node1:8081node2:8081node3:8081
配置flink-conf.yaml

需要在所有Flink集群节点上配置$FLINK_HOME/conf/flink-conf.yaml文件,这里在node1-3节点上配置,配置内容如下:

#要启用高可用,选主协调者为zookeeper,zk存储一些ck记录及选举信息high-availability: zookeeper#storageDir存储恢复JobManager失败所需的所有元数据,如:job dataflow信息high-availability.storageDir: hdfs://mycluster/flink-standalone-ha/#分布式协调器zookeeper集群high-availability.zookeeper.quorum: node3:2181,node4:2181,node5:2181#根ZooKeeper节点,所有集群节点都位于根节点之下。high-availability.zookeeper.path.root: /flink-standalone-ha#给当前集群指定cluster-id,集群所有需要的协调数据都放在该节点下。high-availability.cluster-id: /standalone-cluster

2、启动测试

Standalone HA 配置完成后,按照如下步骤进行测试:

启动Zookeeper,启动HDFS
#在 node3、node4、node5节点启动zookeeper[root@node3 ~]#  zkServer.sh start[root@node4 ~]#  zkServer.sh start[root@node5 ~]#  zkServer.sh start#在node1启动HDFS集群[root@node1 ~]# start-all.sh
启动Flink Standalone HA集群
#在node1 节点启动Flink Standalone HA集群[root@node1 ~]# cd /software/flink-1.16.0/bin/[root@node1 bin]# ./start-cluster.shStarting HA cluster with 3 masters.Starting standalonesession daemon on host node1.Starting standalonesession daemon on host node2.Starting standalonesession daemon on host node3.Starting taskexecutor daemon on host node1.Starting taskexecutor daemon on host node2.Starting taskexecutor daemon on host node3.

启动Standaloe集群时同时会在node2、node3节点上启动JobManager。

访问Flink WebUI

登录Flink WebUI (https://node1:8081/https://node2:8081/https://node3:8081),无论登录node1,node2,node3节点任意一台节点的WebUI 页面都相同:

在WebUI中无法看到哪个节点是Active JobManager,我们也可以通过zookeeper查看当前Active JobManager节点,命令如下:

#登录zookeeper 客户端[root@node5 ~]# zkCli.sh#查看对应节点路径信息[zk: localhost:2181(CONNECTED) 1] get /flink-standalone-ha/standalone-cluster/leader/dispatcher/connection_info ...w42akka.tcp://flink@node1:33274/user/rpc/dispatcher_1srjava.util.UUID...
测试JobManager切换

我们可以在Flink Standalone集群中提交一个Flink 任务,提交之后无论在通过哪个节点的8081WebUI都可以看到此任务。提交任务命令如下:

#在node5节点启动 socket服务[root@node5 ~]# nc -lk 9999#在node4客户端向Standalone集群提交任务[root@node4 ~]# cd /software/flink-1.16.0/bin[root@node4 bin]# ./flink run -m node1:8081 -d -c com.mashibing.flinkjava.code.chapter3.SocketWordCount /root/FlinkJavaCode-1.0-SNAPSHOT-jar-with-dependencies.jar

通过https://node1:8081、https://node2:8081、https://node3:8081 WebUI都可以看到提交的任务信息:

在HDFS中也可以看到提交的任务信息:

将node1节点上的JobManager进程kill掉,查看Active JobManager是否变化:

#kill node1 JobManager进程[root@node1 bin]# jps...16309 StandaloneSessionClusterEntrypoint...[root@node1 bin]# kill -9 16309

将Active JobManager kill之后访问各个节点的WebUI可以看到短暂的不可用,稍等一会就可以看到正常可以访问除node1之外的其他节点WebUI,通过查询Zookeeper中节点信息,可以看到Active JobManager 节点切换成了其他节点:

#zookeeper查询命令[zk: localhost:2181(CONNECTED) 1] get /flink-standalone-ha/standalone-cluster/leader/dispatcher/connection_info...w42akka.tcp://flink@node2:35581/user/rpc/dispatcher_1srjava.util.UUID...

通过以上测试Flink Standalone HA 生效,如果想要把在node1上kill掉的JobManager启动起来,需要手动执行如下命令:

#在node1启动JobManager[root@node1 bin]# ./jobmanager.sh start

被kill的JobManager重新启动后作为备用的JobManager也可以访问WebUI查看集群中执行的任务。

二、Flink 基于Yarn HA

正常基于Yarn提交Flink程序,无论使用哪种模式提交任务都会启动JobManager角色,JobManager角色是哪个进程可以通过Yarn WebUI查看对应的ApplicationID启动所在节点的对应进程, Yarn Session提交任务模式中该角色进程为"YarnSessionClusterEntrypoint"、Yarn Per-Job提交任务模式中该角色进程为"YarnJobClusterEntrypoint"、Yarn Application提交任务模式中该角色进程为"YarnApplicationClusterEntryPoint"。

当JobManager进程挂掉后,也就是Yarn Application任务失败后默认不会进行任务重试,所以Flink 基于Yarn JobManager HA的本质是当Yarn Application程序失败后重试启动JobManager,实际上就是通过配置Yarn重试次数来实现高可用。JobManager重试过程需要借助zookeeper 协调JobManger失败后的切换,进而进行恢复对应的任务,同时需要HDFS存储每个Flink任务的执行流程数据。

1、Yarn HA配置

Yarn HA配置步骤如下:

Hadoop中所有节点的yarn-site.xml

在所有Hadoop节点上配置$HADOOP_HOME/etc/hadoop/yarn-site.xml文件,配置应用程序失败后最大尝试次数,以下该参数默认值为2,不配置也可以:

#设置提交应用程序的最大尝试次数,建议不低于4,这里重试的是ApplicationMaster  yarn.resourcemanager.am.max-attempts  4
配置flink-conf.yaml文件

只需要在向Yarn提交任务的客户端节点上配置Flink的flink-conf.yaml文件。未来我们在node5节点上来基于Yarn 各种模式提交任务,所以这里我们在node5节点上配置$FLINK_HOME/conf/flink-conf.yaml文件,配置内容如下:

#要启用高可用,选主协调者为zookeeper,zk存储一些ck记录及选举信息high-availability: zookeeper#storageDir存储恢复JobManager失败所需的所有元数据,如:job dataflow信息high-availability.storageDir: hdfs://mycluster/flink-yarn-ha/#分布式协调器zookeeper集群high-availability.zookeeper.quorum: node3:2181,node4:2181,node5:2181#根ZooKeeper节点,所有集群节点都位于根节点之下。high-availability.zookeeper.path.root: /flink-yarn-ha#给当前集群指定cluster-id,集群所有需要的协调数据都放在该节点下。high-availability.cluster-id: /yarn-cluster#该参数同yarn-site.xml中yarn.resourcemanager.am.max-attempts参数,指向yarn提交一个application重试的次数,也可以不设置,非高可用默认为1,高可用默认为2,建议不大于yarn.resourcemanager.am.max-attempts参数,否则会被yarn.resourcemanager.am.max-attempts替换掉。yarn.application-attempts: 4

2、启动测试

启动Zookeeper和HDFS
#在 node3、node4、node5节点启动zookeeper[root@node3 ~]#  zkServer.sh start[root@node4 ~]#  zkServer.sh start[root@node5 ~]#  zkServer.sh start#在node1启动HDFS集群[root@node1 ~]# start-all.sh
node5节点向Yarn提交任务

这里以在node5节点上以Yarn Application模式提交任务为例,命令如下:

#在node5节点启动 socket服务[root@node5 ~]# nc -lk 9999#以Application模式提交任务,命令如下[root@node5 ~]# cd /software/flink-1.16.0/bin/[root@node5 bin]# ./flink run-application -t yarn-application -c com.mashibing.flinkjava.code.chapter3.SocketWordCount /root/FlinkJavaCode-1.0-SNAPSHOT-jar-with-dependencies.jar

以上任务提交后可以在Yarn WebUI中看到对应的Application信息:

测试Flink Yarn HA

在Yarn WebUI中进入到FlinkWebUi页面,查看该JobManager启动所在的节点:

进入JobManager所在节点,并kill对应的JobManager进程,模拟JobManager进程意外中断,在Yarn WebUI中可以看到对应的Yarn ApplicationID重试执行,点击该ApplicatID 可以看到该任务重试信息:

通过以上测试,Flink Yarn HA 生效。

上一篇: 下一篇:
x
推荐阅读

大数据Flink进阶(十六):Flink HA搭建配置

2023-04-10

太平福禄终身重大疾病保险怎么样?可靠吗?|每日播报

2023-04-10

【全球独家】云南景东:红外相机拍到多段豹猫野外活动视频

2023-04-10

【天天时快讯】举例说明什么是机会成本的定义_举例说明什么是机会成本

2023-04-10

精选!音频视频的电源接头是什么 音频视频和安全摄像头中的电源接头

2023-04-10

杯具!北京一小区电动车爆炸起火 楼上邻居逃生致死:网友吵翻为何电池拿回家充电|速递

2023-04-10

融合创新 数智未来——2023机床制造业CEO国际论坛召开 环球微头条

2023-04-10

人民币国际化“再下一城”!宁波外贸企业怎么看?

2023-04-10

常被嫌弃的田间杂草,如今成“极品野菜”,鲜嫩营养,4月抓紧吃

2023-04-10

中国电影大数据盛典落幕!五位实力戏骨获奖,张艺谋成最大赢家|世界快报

2023-04-10

临湘浮标·游钓天下④ | 视频→浮标制作争霸赛,冠军,掲晓!

2023-04-10

全球微头条丨Largest U.S. gateway for maritime trade effectively shut down due to worker shortages

2023-04-10

世界关注:直击舍得酒业经销商大会:郭广昌现身未发言,上线千元新品,3年要卖10亿元

2023-04-09

9岁女孩生日礼物送什么

2023-04-09

韩国男子杀中国妻子未遂获减刑具体详细内容是什么

2023-04-09

美国孟菲斯动物园为大熊猫“丫丫”举行欢送会_环球快报

2023-04-09

金鼓鱼寿命几年?(金鼓鱼)

2023-04-09

日本人口2021总人数是多少_日本人口2021总人数|环球今热点

2023-04-09

数字经济发展,为中国式现代化提供新动能

2023-04-09

此人是雍正手下的悍将,为何被列下92道罪状下令自尽,原因很简单_环球时快讯

2023-04-09

启东市海复镇八旬高龄的“曹禺戏剧奖”得主、退休文化站长晓石创办民间艺术团——乡村舞台上演绎“戏痴”传奇 世界快资讯

2023-04-09

vlookup函数怎么应用一列_vlookup函数怎么应用

2023-04-09

天天看热讯:处置公告!淄博最新发布

2023-04-09

今热点:英语作文书信范文通用(必备7篇)

2023-04-08

小小旗袍盘扣美出圈!静安别样“城市美育日”让人人出彩

2023-04-08

每日快讯!开局加把劲|春天里,我们都是奋斗者!

2023-04-08

苏州科技大学就“凌晨4点发考研待录取通知”向考生诚恳道歉

2023-04-08

全球今日讯!一个人男人,对你是否深爱,这些细节你要察觉到

2023-04-08

取长补短什么意思打一生肖_取长补短打一生肖_世界信息

2023-04-08

每日播报!红白机游戏突然出现奇怪的画面,妈妈请听我解释

2023-04-08

看热讯:场馆更智慧 健身更便捷

2023-04-08

黑龙江万余个重点项目开复工 全球微速讯

2023-04-08

官方:玻利维亚前锋杰弗森加盟南京城市-全球简讯

2023-04-08

Galaxy S10搭载三星新的48MP 32MP相机之一

2023-04-08

全球今日报丨苏格兰与英格兰的关系是什么(苏格兰与英格兰什么关系)

2023-04-07

天天滚动:“海巡06”轮编队巡查闽江口及马祖列岛周边海域

2023-04-07

孙卓被拐案庭审结束,将择期宣判_世界微速讯

2023-04-07

环球信息:哪些水果吃了会上火(哪些水果吃了会上火呢)

2023-04-07

世界快看:东港股份:RFID和电子票证业务都是公司未来发展的方向之一

2023-04-07

新华社权威快报丨我国全新研制的AC332直升机圆满完成全状态首次飞行

2023-04-07

逾70亿投资储能值不值?这只锂电概念股去年业绩翻两倍,今年股价跌幅近三成 天天日报

2023-04-07

天天最资讯丨泽连斯基波兰之行引关注 外媒称其有意从巴赫穆特撤军

2023-04-07

电影娱乐板块走强,上海电影涨停|当前时讯

2023-04-07

招商局集团有限公司总经理调整 焦点热闻

2023-04-07

好政策助经济企稳回升

2023-04-07

环球今亮点!江苏宜兴集结大院大所,建好建强科创产业“主阵地”

2023-04-07

新昌县公积金中心多举措掀起“让金回家”专题服务宣传热 天天滚动

2023-04-07

强信心 稳经济 促发展|创新消费场景,激发消费活力

2023-04-07

无抵押无担保 这家银行为何敢向农民放贷 独家

2023-04-07

我们的少年时代有第二季吗官宣_我们的少年时代有第二季吗

2023-04-07

每日观点:在word中制表符就是用户使用键盘上的什么键输入的字符_在word中如何输入制表符

2023-04-06

巴比食品:2022年净利2.22亿元,同比降29.19%

2023-04-06

山羊古寨_热闻

2023-04-06

日本民众集会反对福岛核污染水排海

2023-04-06

环球短讯!我国最大内陆湖泊青海湖开湖

2023-04-06

环球新动态:最新进展!建成后可提供1700多个停车位

2023-04-06

刘树根任西华大学党委书记 李秋实任校长|全球头条

2023-04-06

全球短讯!春日正暖 ,来塔云山赴一场春日之约吧!

2023-04-06

最高5000元大奖!生态环境节日海报大赛正式启动|全球观焦点

2023-04-06

今头条!不要逆着状态去做事

2023-04-06

每日讯息!四年级下册数学同步全部答案_四年级下册数学同步练习答案

2023-04-06

vue3报错 ERROR Failed to compile with 1 errorYou may use special comments to disab 世界微头条

2023-04-06

天天资讯:黄金短线将回调,中期依托1980继续看涨

2023-04-06

环球观天下!广东部分河流发生超警洪水|早安广东

2023-04-06

【机构调研记录】国联安基金调研亚钾国际

2023-04-06

滕哈赫:希望拉什福德继续保持专注 我们想像机器一样踢球不犯错

2023-04-06

冀卫 · 医说就懂⑪|这样做,平稳度过更年期

2023-04-06

CBA常规赛最终排名!浙江冠军,广东力压辽篮,季后赛对阵出炉|天天新消息

2023-04-05

每日播报!胜率仅36%!外媒看衰湖人战快船前景,赢球升第五,反超勇士

2023-04-05

美国银行业危机影响或持续数年,摩根大通CEO年度信狠批美联储

2023-04-05

瑞泰新材04月04日被深股通减持30.59万股_热议

2023-04-05

出游踏青 这些景区优惠了解一下

2023-04-05

抖音礼物没更新出来怎么办_新要闻

2023-04-05

当前时讯:灰色背景配什么颜色的字好看_灰色背景配什么颜色的文字好看

2023-04-05

澳洲联邦银行(CBA)分析师VivekDhar在一份报告中说,至少在美联储FOMC5月初再次开会之前,黄金价格可能会继续对弱于预期的美国经济数据做出积极反应

2023-04-05

当前热议!英语专业8级备考指南:写作·改错·人文知识分册_关于英语专业8级备考指南:写作·改错·人文知识分册的简介

2023-04-05

《晏会厅》25期|高睿珂:德国马牌响应市场革新,多产品矩阵满足消费者需求

2023-04-05

什么才是真正气质美,看回农村的董卿就知道!穿搭低调素颜也高级

2023-04-05

环球今热点:我没有他有天没有地有打一字谜_我没有他有天没有地有打一字谜

2023-04-05

泉港二中初中部朱建忠_泉港二中 天天滚动

2023-04-04

突发!周鸿祎离婚,前妻将分走90亿|环球观焦点

2023-04-04

环球即时:《恋爱狼人杀》同人文|奔赴一场粉色山茶花之约

2023-04-04

世界动态:半导体板块涨1% 华海诚科涨79%居首

2023-04-04

大幅裁员后的森马服饰 2022年归母净利创上市12年历史新低 天天观焦点

2023-04-04

环球观察:obs录视频怎么设置才不卡(obs录视频)

2023-04-04

焦点速讯:华域汽车: 华域汽车关于全资子公司参与设立股权投资基金备案完成的公告

2023-04-04

湘潭市教育系统举行安全管理人员培训_天天热讯

2023-04-04

天天微头条丨《金瓶梅》中颇具喜剧韵味的修辞手法,写尽了人间沧桑

2023-04-04

一问到底丨卫星互联网应用提速 如何改变你我生活?

2023-04-04

鹿邑县财政局:积极推进道路交通事故救助基金为民解忧纾困

2023-04-04

持续增长,我国智能投影市场连续多年保持百万级的增长

2023-04-04

特朗普打算在纽约法院声明自己无罪|当前简讯

2023-04-04

崩坏3SP终末协理0017技能是什么-SP终末协理0017技能详细介绍

2023-04-04

简讯:原初黑洞与暗物质有关吗

2023-04-04

焦点速读:贵阳 青云市集里的烟火气

2023-04-04

当前速看:国电电力(600795)4月3日主力资金净卖出1.32亿元

2023-04-04

天天信息:成交量环比增逾五成 深圳楼市回暖能否持续

2023-04-04

当前速看:算时间天数的计算器_时间计算器精确到秒

2023-04-04

泰山高度是多少米多少级台阶_泰山高度是多少米

2023-04-03

2023北京中轴线文化遗产传承与创新大赛启动|当前头条

2023-04-03