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 生效。
标签:
-
大数据Flink进阶(十六):Flink HA搭建配置
默认情况下,每个Flink集群只有一个JobManager,这将导致单点故障(SPOF,singlepointoffailure),如果这个JobMana
-
景观细部设计手册2_对于景观细部设计手册2简单介绍-视讯
1、《景观细部设计手册2》是2010年10月1日华中科技大学出版社出版的图书。2、作者是佳图文化。文章到此就分享结束,希
-
橡皮套鞋导弹(关于橡皮套鞋导弹介绍)
1、苏联的A-35“橡皮套鞋”(北约称作ABM-1“小羚羊”)(Galosh)反弹道导弹系统,是世界第一套反弹道导弹系统。2、早在1961年3月,苏联扔左行
-
观点:重阳节是什么节日呢_重阳节的习俗
欢迎观看本篇文章,小升来为大家解答以上问题。重阳节是什么节日呢,重阳节的习俗很多人还不知道,现在让我们一起来看看吧!1、
-
全球看点:这批基金年报里藏着哪些重要提示?
他在今年的展望中表示,“与市场所认为的不同的是,我们会认为2023年对我们的挑战会大于2022年”,具体原因有以下三点:易方达张坤在年报中...
-
环球快消息!送12岁女孩礼物排行榜
12岁女儿正是上学的年龄,可是孩子的开始步入成熟了,给她送点什么样的礼物她会喜欢。今天小编就给大家推荐一些10岁女孩的生
-
行业追踪|酒类市场(4月3日-4月9日):30年青花汾酒500ml(53°)京东价格环比大幅下跌-环球热点
本周,酒类市场价格 产量变动情况如下所示:国内酒类平均价格一览表(按周涨跌幅幅度排序)品种周涨跌幅(%)月涨跌幅(%)日期价格 数量单位3
-
世界今日报丨李鸿彬:4.3-4.7黄金本周策略总结,事实说话!!
做投资一定要首先树立正确的投资理念,这是一切的根源,其次做好仓位资金管理,重要的保持良好的心态,赚了不要骄傲,亏了不要气馁,另外辅以
-
每日信息:quartz手表是什么牌子哪个国家的_quartz手表是什么牌子
1、quartz是英文“石英”的意思。2、如果你的表上有这个单词。3、这只说明你的手表是电子石英脉冲手表。本文分享完毕,
-
谈谈心恋恋爱|每日信息
1、2006年7月17日在四川电视台影视文艺频道首播的《谈谈心恋恋爱》是朱传光执导的青春校园剧,该剧由季晨、端木新卉、黄
-
windows7是什么样的(windows7和vista) 环球焦点
windows7是什么样的,windows7和vista很多人还不知道,小城来为大家解答以上问题,现在让我们一起来看看吧
-
公安部10项交管服务便利措施6月1日起实施
公安部今天召开新闻发布会,发布了公安交管服务群众服务发展十项便利措施。这十项新措施从深化减证便民、服务群众出行、创新“互
-
当前热讯:2836机芯是哪里产的_2836机芯
1、1051机芯,其基础机芯是ETA2836-2,据说到了欧米茄手里有过打磨。2、但基本就那么回事,严格讲就是ETA
-
松下激光位移传感器说明书_松下激光位移传感器 环球今热点
1、-是否需要非接触测量,非接触测量通常是因为被测物体不能被接触,以避免产生划痕和印记。2、或者是测量效率的要求,接触
-
天天速递!苏暖暖厉衍琛小说每天更新几章(苏暖暖厉衍琛免费全部章节)
追剧看小说是时下很多人闲余时间爱做的事情,尤其是乘坐交通工具的时候,近期小编就被一部苏暖暖厉衍琛的小说洗了脑,那么苏暖暖厉衍琛小说每
-
美国人说,他们要派出最强球队来成都
如果以在NCAA夺冠的标准来定义最强似乎已经是板上钉钉的一件事了再结合近年来美国大运队的组队规律代表美国出战的是克莱姆森大学男篮 当赛季在
-
兰帕德拯救切尔西?神灯率队拿到欧战资格就是胜利
2012年,切尔西也是在临时主帅迪马特奥的带领下,赢得了队史第一座欧冠。作为波特在布莱顿和切尔西的教练组成员,布鲁诺此前从未执教过大球队
-
新配色绝了!苹果iPhone 15 Pro渲染图再曝光:钛合金中框、相机更凸起
据国外科技媒体9to5MAC报道,iPhone15Pro的最新CAD渲染图已经发布。这些渲染图基于从MFi编程客栈配件厂商收集的更多信息,更加准确。其中编程
-
微速讯:深度手术解决不完美 新君越车主改装篇
不用看帖子,就知道部分催命鬼的所作所为必定让人痛恨。首先,还是先给各位亲戚显摆一下吧,今天是在ZF机关的牛X车引导下
-
今日热讯:Google Duo群组通话可让您邀请具有链接的任何人
最近GoogleDuo群组通话可让您邀请具有链接的任何人这个话题,相信很多小伙伴都是非常有兴趣了解的吧,一段好的故事可
-
广东中考作文题目:给自己一些慰藉_满分作文700字 亲近大自
抄写作文网小编为大家提供广东中考作文题目:给自己一些慰藉_满分作文700字亲近大自来供大家参考,欢迎阅读。2011广东中考作文题目:给自己一些
-
9年“卷”成特斯拉四大高管之一!朱晓彤再获晋升,知情人士称其每天6点开工 环球观焦点
或许是能力超群,或许是运气使然,此时刚进入特斯拉半年多的朱晓彤临危受命:2014年12月,朱晓彤被任命为特斯拉全球副总裁兼中国区总裁。 Wedb
-
【世界新要闻】泪沟怎么消除简单方法
1、要说简单的办法其实也蛮多的比如你可以用(兰碧恃)来改善的就可能是晚上熬夜或者是睡觉钱喝水太多引起的~平时要注意这些的
-
仁慈普爱真善至美是啥_仁慈普爱真善至美
1、字面看是“仁爱慈善广泛博爱。2、真完善到最美好”之意。本文就为大家分享到这里,希望小伙伴们会喜欢。
-
环球观察:通程控股:2022年年营业收入同比下滑7.85%
通程控股4月7日公告,2022年公司营业收入185亿元,同比下滑85%;归母净利润46亿元,同比增26%。向全体股东每1
-
官方:旅美大熊猫美香、添添、小奇迹身体健康状况总体良好 滚动
中国大熊猫保护研究中心关于与美国史密桑宁国家动物园大熊猫合作研究相关情况的说明连日来,网友们对美国史密桑宁国家动物园旅美大熊猫“美...
-
阿根廷男足重回世界第一 历时6年终回巅峰|全球播报
国际足联最新一期世界排名于6日公布,阿根廷男足时隔六年后重新登上世界排名榜首。尽管去年赢得了世界杯冠军,但阿根廷队的积分之前仅能够获得
-
沙湾市小麦播种忙 奏响“春耕曲”
沙湾市小麦播种忙奏响“春耕曲”,春小麦,小麦,种植,春麦,冬麦,播种机
-
【戴拿奥特曼穿越到约战里】第四十五章 冲突的想法 世界新资讯
“这里还真是够复杂的,不过到目前为止好像没有发现敌人呢。”“但还是小心为上,说不定还有敌人什么的,还有伊守君你也要注意一下自己啊,...
-
“桃花节”保畅,他们这样做
“桃花节”保畅,他们这样做---每年清明前后是杨店镇桃花盛开季,京港澳高速杨店出口也将迎来春季赏花和清明扫墓人流高峰,为有效提升司乘...