我有一个Apache-Samza的项目,我遇到了重复数据的问题。
这是我的检查点配置:
task.checkpoint.factory=org.apache.samza.checkpoint.kafka.KafkaCheckpointManagerFactory
task.checkpoint.system=kafka
task.checkpoint.replication.factor=2
task.commit.ms=20000
关于文档我们可以读到这个:
如果配置了task.checkpoint.factory,则此属性确定检查点的写入频率。该值是检查点之间的时间(以毫秒为单位)。检查点的频率会影响故障恢复:如果容器意外失败(例如由于崩溃或机器故障)并重新启动,它将在最后一个检查点恢复处理。自失败容器上次检查点以来处理的任何消息都将再次处理。更频繁地检查点减少了可以处理两次的消息数量,但也使用了更多资源。
我可以将task.commit.ms=20000
更改为250毫秒或1毫秒。它好还是坏?我有一个非常好的集群。
为什么我需要改变这一点,因为这个Samza(工人)每周都要打1-3次。现在,临时解决方案每次都是提交偏移量。
文档参考:
答案 0 :(得分:0)
我的解决方案我知道这不是解决所有问题的方法。它将task.commit.ms
更改为task.shutdown.ms=5000
的相同内容。