概述:
事实上,集群的高可用(High Availablility,以下简称 HA)配置是大数据领域经典的一个问题。
通常 HA 用来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
06中:简单地介绍了 HA 配置。
03中:提到过 Flink 集群中的角色:
JobManager:集群管理者的角色:负责任务调度,协调Checkpoints、协调故障恢复、收集Job的状态信息、管理Flink集群中从节点的TaskManager。
其他的一些角色详看03.
在默认的情况下,我们的每个集群都只有一个 JobManager 实例,假如这个 JobManager 崩溃了,那么将会导致我们的作业运行失败,并且无法提交新的任务。
因此,在生产环境中我们的集群针对不同模式进行部署的集群,我们需要不同的配置。
首先我们看一下源码:
Flink 中的 JobManager、WebServer 等组件都需要高可用保障,并且 Flink 还需要进行 Checkpoint 元数据的持久化操作。与 Flink HA 相关的类图如下图所示,我们跟随源码简单看一下 Flink HA 的实现。
NONE:非 HA 模式
ZOOKEEPER:基于 ZK 实现 HA
FACTORY_CLASS:自定义 HA 工厂类,该类需要实现 HighAvailabilityServicesFactory 接口
创建 HighAvailabilityServices 的实例方法如下:
public static HighAvailabilityServices createHighAvailabilityServices(
Configuration configuration,
Executor executor,
AddressResolution addressResolution) throws Exception {
HighAvailabilityMode highAvailabilityMode = LeaderRetrievalUtils.getRecoveryMode(configuration);
switch (highAvailabilityMode) {
case NONE:
// 省略部分代码
// 返回非HA服务类实例
return new StandaloneHaServices(
resourceManagerRpcUrl,
dispatcherRpcUrl,
jobManagerRpcUrl,
String