问题描述:
使用两阶段提交写kafka,Flink任务一直重试,检查点一直无法保存
导致原因:(个人猜测)
Kafka的两阶段提交涉及到事务,kafka的配置文件中可能对事务相关配置不合理,导致两阶段的预提交阶段完成后,无法正式提交,以至于检查点一直无法成功保存。
解决方法:
方法1:
如果对准确性要求不太严格,可以尝试去掉kafka的两阶段提交。
方法2:
可以修改kafka的配置文件(目前只在测试集群进行了测试)
事务相关的配置,可以将transaction.state.log.replication.factor调整为3(默认的初始值为1),transaction.state.log.min.isr的值调为2(默认初始值为1),修改配置文件后重启kafka,再使用两阶段提交不在出现上述问题。