默认情况下,每个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里介绍。
Standalone模式下,JobManager的高可用性的基本思想是,任何时候都有一个Alive JobManager和多个Standby JobManager。Standby JobManager可以在Alive JobManager挂掉的情况下接管集群成为Alive JobManager,这样避免了单点故障,一旦某一个Standby JobManager接管集群,程序就可以继续运行。Standby JobManagers和Alive JobManager实例之间没有明确区别,每个JobManager都可以成为Alive或Standby。
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
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查看集群中执行的任务。
正常基于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任务的执行流程数据。
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
#在 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集群只有一个JobManager,这将导致单点故障(SPOF,singlepointoffailure),如果这个JobMana
央视网消息:据@水韵西湖微博消息,对于“4·9”媒体曝光西湖手划船违规营运问题的报道,杭州西湖水域管理处高度重视,召集手划船经营企业...
近期,海南12345平台收到消费者举报投诉,称个别“数字藏品”制作、发售机构存在未经授权擅自铸造、发行“数字藏品”行为,可能会影响消...
作为卫浴行业的引领品牌,恒洁致力于深耕中国市场,持续为国民打造品质美好生活,以新国货品牌创新力,构筑中国品牌发展的坚实力量,为行业树
山西省安委办对“3·23”较大中毒窒息事故查处挂牌督办2023年3月23日,山西孝义市山西普尔特药胶生产有限公司发生一起较大中毒窒息事故,造...
2023年4月4日下午,广东理工学院会计学院与肇庆市消防救援支队在7栋303会议室举行“消校共建”讨论会。会计学院院长盛洁、党总支书记黎伯毅...
固阳县气象台发布大风黄色预警【III级 较重】
齐鲁网·闪电新闻4月10日讯近期气温回升、长期无有效降水,森林防火形势严峻复杂。根据市安委会要求及区安委会办公室《转发
脑子里永远有任务眼睛里永远有敌人肩膀上永远有责任胸膛里永远有激情东部战区官兵以坚定意志、强大能力、胜战信心维护国家主权和
1、链接不好放网上你搜联机能看到很多方法大概就下面这样(图片有的上传抽了无视)前提是要完成前置任
IT之家 4月10日消息,此前中兴宣布4月12日将举办2023年度中兴通讯云网生态峰会暨春季新品发布会,并将带来中兴Axon50Ultra、中兴AxonBook、中
均为资料图这次中国之行,毫无疑问,给马克龙极大的震撼。在离开北京的专机上,他就发出一个明确信号。什么信号?欧洲要自强,欧
哈喽小伙伴们 ,今天给大家科普一个小知识。在日常生活中我们或多
4月的南漳,处处涌动着发展的生机和活力,在南漳川发磷酸铁锂专线供水工程、高铁小镇二期工程、蛮河旅游航道工程……一个个重点项目现场,...
河北新闻网讯(记者刘阳通讯员崔卫民)4月7日上午11时左右,两位老人来到石家庄公交九路车队。见到工作人员激动地说:我刚刚坐9路公交车,把背
美媒:起诉特朗普令美政坛动荡升级
1、菊花比较怕涝,养护期间如果浇水过多造成积水,菊花就会烂根,这时候我们要将菊花从土壤中取出,洗净根部的泥土,之后对烂根的情况进行检查
拥有一台ThinkPad笔记本意味着什么?不同的小黑用户,可能会有不同的答案。
“我只是正常上个班,竟然说我泄露公司机密,要求查手机微信聊天记录和通讯录,不让查就辞退。”近日,湖北武汉一公司以“捉内奸
停息挂账是现在很多出现逾期的人想要去办理的一种午业务,因为它在一定程度上可以减轻你后期的还款压力。但是,我们都可以办理这种业务吗?今
巴尔韦德表示:“巴埃纳在之前的国王杯比赛中对自己未出生的儿子进行了诅咒,所以在比赛结束后就找到了对方进行理论”,显然巴尔韦德是本场...
记者|俞瑶陶玥阳7月13日,国新办举行了2022年上半年金融统计数据情况新闻发布会,会上表示,住户部门贷款增长有所放缓
五一长假想好去哪儿玩了吗?今年出境游大门打开,要说起出国去哪儿,最近超热门的泰国肯定是不少人的首选。萨瓦迪卡,“泰”好玩啦!温暖宜...
在北京时间4月8日晚开打的英超第30轮热刺主场迎战布莱顿的“东亚德比”中,韩国巨星孙兴慜开场后便打进世界波,解锁了自己英超百球里程碑。...
犬王:中国什么时候也能有这样制作豪华视听盛宴天马行空剧情魔幻现实的摇滚演唱会版历史剧啊(雾)(•́₋•̩̥̀)最近再搜平家物语的时候看
想诸葛,找阿亮,看完之后咱去浪~大家好,这是诸葛很亮游戏解说!不知从何时起,《三国杀》的笑脸武将图片在众多玩家中广为流传,其火爆程度简
直播吧4月8日讯 CBA官方宣布,深圳内线沈梓捷当选本赛季最佳防守球员:39场比赛34场首发,场均24 3分钟贡献11 2分6 6篮板1 3封盖1 5助攻,以1
上海应届毕业生求职压力大不大?择业最看中什么?记者招聘会实探
据工信微报,近日,数字化供应链国际标准ITU-TY 4910Maturitymodelofdigitalsupplychainforsmartsustainablecities(《数字化供应链成熟度模型
现代快报网是由凤凰出版传媒集团旗下的现代快报倾力打造的江苏新闻门户网站,目前在南京、苏州、无锡、常州、扬州、泰州等十三地市,影响力辐射
Copyright © 2015-2023 今日服装网版权所有 备案号:沪ICP备2023005074号-40 联系邮箱:5 85 59 73 @qq.com