Flink基于zookeeper的高可用分析

本文深入探讨了Flink如何利用Zookeeper实现高可用,包括JobMaster的选举和TaskExecutor的监听机制。Flink的ZooKeeperHaServices提供了基于Zookeeper的选举和监听服务,如LeaderElectionService和LeaderRetrievalService,确保在leader变化时能平滑过渡。JobManagerRunner作为LeaderContender参与选举,而TaskExecutor通过监听JobMaster的leader变化来保持连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

《2021年最新版大数据面试题全面开启更新》

Flink中JobMaster、ResourceManager、Dispatcher、WebMonitorEndpoint提供了基于zookeeper高可用,涉及到leader选举与监听, leader选举基于zookeeper开源客户端CuratorFramework 的LeaderLatch方式实现,监听则通过NodeCache实现。基于此Flink提供了zookeeper高可用ZooKeeperHaServices, 通过该工具类可以创建LeaderElectionService与LeaderRetrievalService,包含了对应与zookeeper的znode节点分别是

/resource_manager_lock
/dispatcher_lock
/job_manager_lock
/rest_server_lock

LeaderElectionService用于leader选举服务,基于zk的实现类是ZooKeeperLeaderElectionService,LeaderRetrievalService用于监听leader恢复服务,基于zk的实现类是ZooKeeperLeaderRetrievalService。

涉及到两个重要的角色&

### Flink 1.8.1 HA集群搭建与配置 #### 准备工作 为了构建一个高可用(HA)的Flink集群,需先准备好基础环境。这包括但不限于Java运行环境(JRE),因为Flink基于JVM之上运作[^1]。 #### 下载并解压Flink包 前往Apache Flink官方网站下载页面获取指定版本(即1.8.1版)压缩文件,并将其放置于服务器上适当位置后解压缩。此过程可通过命令行工具完成,例如`wget`用于下载以及`tar -zxvf flink-1.8.1-bin-hadoop27.tgz`来解压软件包。 #### 修改配置文件实现HA支持 编辑位于`$FLINK_HOME/conf/`目录下的`flink-conf.yaml`文件以启用ZooKeeper作为协调服务提供者从而达到高可用目的: ```yaml high-availability: zookeeper high-availability.zookeeper.quorum: zk01:2181,zk02:2181,zk03:2181 high-availability.storageDir: hdfs:///flink/recovery/ jobmanager.high-availability选项可根据实际需求调整为其他存储系统路径;此处仅作示例说明. ``` 上述设置指定了使用ZooKeeper管理元数据,并定义了三个节点组成的Quorum地址列表,同时设置了持久化状态信息所使用的HDFS路径。 #### 启动JobManager和服务进程 启动前确认所有依赖项均已就绪,特别是已正确安装并配置好ZooKeeper集群和HDFS分布式文件系统。之后可以依次执行如下Shell脚本来激活各个组件: ```bash ./bin/jobmanager.sh start cluster ``` 该指令会自动连接至先前设定好的ZooKeeper实例,并尝试选举出Leader角色负责接收提交的任务请求. #### 提交应用程序 当整个架构稳定运行后即可通过CLI客户端或者其他方式上传打包后的作业给定调度器处理。具体操作方法参见官方文档关于如何向集群发送任务的部分描述.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王知无(import_bigdata)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值