根据官方文档 [1],checkpoint offset 是 Flink 的功能,auto commit offset 是 kafka client 的功能。
这俩功能在作用上有一定重叠,所以根据配置会有不同的行为表现;
- 如果 Flink 没有开启 checkpoint,那么 offset 的保存依赖于 kafka client 的 auto commit offset;
- 如果Flink开启了checkpoint,那么auto commit offset会被Flink禁用;在flink完成checkpoint之后,根据用户配置决定是否提交offset到zookeeper (kafka0.8) 或 kafka broker ( kafka 0.8+);
结论:如果不开启checkpoint,只要kafka properties中配了”enable.auto.commit”为true 和 “auto.commit.interval.ms”大于0,就能定期提交offset到kafka;
根据官方文档 [2],current-offsets 是当前 Flink 读取到的最新 offset;
committed-offsets 是提交到 zookeeper/kafka broker 的offset;
consumer lag 是指 topic 最新的 offset(log end offset) 和 committed-offsets的差值;Flink没有提供 consumer lag 信息,该信息依赖于kafka及其相关运维工具生成;
YARN AM 包含了 Dispatcher/Resource Manager/JobManager,AM 挂掉的时候 YARN 会负责拉起来一个相同配置的 AM。
Flink 自身的高可用,per job 模式下,CheckpointStore 基于 ZooKeeper 和 HDFS 来做,可以保证。JobGraphStore 存在内存里,不是高可用的,但是每次新拉起来的 AM 都带有用户提交的 JobGraph 信息,所以新拉起来的 Dispatcher 也能从中知道 JobGraph 的内容。