我可以将task.commit.ms设置为每1ms一次吗?

时间:2016-08-09 18:11:19

标签: java apache-kafka offset apache-samza

我有一个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次。现在,临时解决方案每次都是提交偏移量。


文档参考:

Appache-Samza

Apache-Samza-Configuration

1 个答案:

答案 0 :(得分:0)

我的解决方案我知道这不是解决所有问题的方法。它将task.commit.ms更改为task.shutdown.ms=5000的相同内容。

Atlas-Samza-Configuration Shutdown