记录flink读取kafka数据时checkpoint配置对offset提交的影响

一、问题描述

flink消费kafka 数据过程中,结果数据正常输出,但是kafka产生数据堆积
记录flink读取kafka数据时checkpoint配置对offset提交的影响_第1张图片

二、原因分析

flink 任务运行中,checkpoint 失败导致offset 一直未提交,导致kafka 数据堆积告警

三、优化设置

1.查看日志,分析checkpoint 失败原因,考虑资源及代码逻辑优化,或者checkpoint 配置优化,常见的checkpoint 配置

//	    每10s 开始一次checkpoint
       senv.getCheckpointConfig().setCheckpointInterval(10000L);
//      设置模式为最少一次
        senv.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.AT_LEAST_ONCE);

//      确认 checkpoints 之间的时间会进行 1 分钟
        senv.getCheckpointConfig().setMinPauseBetweenCheckpoints(10000L);

//      设置检查点被丢弃所花费的最大时间  5分钟
        senv.getCheckpointConfig().setCheckpointTimeout(300000L);
//      允许Checkpoint连续失败次数  10次
        senv.getCheckpointConfig().setTolerableCheckpointFailureNumber(10);
//       同一时间只允许一个 checkpoint 进行
        senv.getCheckpointConfig().setMaxConcurrentCheckpoints(1);

2.(粗暴做法,不推荐)由于checkpoint 经常失败影响任务运行,因此关闭checkpoint,关闭checkpoint后,需配置kafka 消费者自动提交offset

//      设置提交方式为自动提交
 properties.setProperty(ConsumerConfig.ENABLE_AUTO_COMMIT_CONFIG,"true");
      
//      设置提交间隔为1000ms  
 properties.setProperty(ConsumerConfig.AUTO_COMMIT_INTERVAL_MS_CONFIG,"1000");

官网描述:
记录flink读取kafka数据时checkpoint配置对offset提交的影响_第2张图片

禁用checkpoint后,任务会默认使用savepoint,这个时候任务自动重启功能会失效,为避免savepoint失败导致任务失败的情况,建议配置
checkpoint失败间隔次数senv.getCheckpointConfig().setTolerableCheckpointFailureNumber(10)

问题圆满解决
在这里插入图片描述

你可能感兴趣的:(大数据,kafka,kafka,flink,大数据)