
JobManager 高可用(HA)模式加强了 Flink 集群防止 JobManager 故障的能力。 此特性确保 Flink 集群将始终持续执行你提交的作业。
通过将为 jobmanager 提供 leader + standby 的模式,来解决单点故障

可选的高可用服务
答案:flink on yarn 模式是不存在 standby 的 jobmanager 的,因为 yarn 提供的资源模式,只允许有一个 master 和 多个 worker,其恢复方式是通过 yarn 对于 master 的拉起来实现 HA 的;


控制参数:
yarn.application-attempts=N
由于,Jobmanager 的 HA 是旧的先挂掉,新的再被拉起,因此需要有一个地方存放用于恢复的信息,这也是 zookeeper 用作高可用服务的原因;
答案:zookeeper 存放数据量更小的元信息、hdfs 存放实际内容;
存储介质 | 存储内容 | 作用 | 数据量大小 |
|---|---|---|---|
ZooKeeper | Leader 信息、JobGraph 指针、Checkpoint 指针、锁 | 协调和控制、选举、高可用元信息 | 小,轻量级元数据 |
HDFS | Checkpoint 状态数据、JobGraph 文件、Savepoint | 状态持久化、恢复数据 | 大,状态快照全量数据 |
Flink on yarn 模式下,如果开启了了 yarn 的 attempt 重试,但是没有使用 zookeeper 会产生什么问题呢? 是否也能够保证 jobmanager 的正常拉起呢?
如下只有 yarn 的 attempt,但是没有 high-availability 的相关配置
yarn.application-attempts = 2答案: jobmanager 异常时能够拉起,但是无法自动从状态恢复,因为没有 high-availability 去查询可用的 checkpoint 等等,虽然在 hdfs 上有,但是这个路径和查询必须通过 zookeeper 中的元信息指针才能读取到;
产生的问题: 当出现这类情况时(例如 yarn NM 下线导致 jobmanager 异常),当被 yarn 的 attempt 重试拉起时,由于最新 chk 无法找到,flink 任务从零状态启动,会导致计算结果不符合预期,产生严重的质量问题,且这个恢复时间非常快,无法报警通知出来;无感知的情况下产生严重质量问题;
官网其实有所提及,当不开启 HA 时,默认值为 1 也是为了避免自动无状态恢复,造成数据质量问题,切不可在未开启 HA 时,调整该参数 > 1

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。