当批量螺栓完成处理批次时,提交每个分区的最高偏移量的正确方法是什么?我主要担心的是当整个shebang将要运行时,机器在处理批次时死亡在AWS spot实例中。
我是风暴发展的新手我似乎无法找到IMO的答案是kafka和风暴的相当直接的用法。
情境:
基于Guaranteeing Message Processing guide,假设我有一个("word",count)
元组的蒸汽(kafka主题),处理X tupples的批处理螺栓,进行一些聚合并创建CSV文件,将文件上传到hdfs / db和acks。
在非strom“天真”的实现中,我会读取X msgs(或读取Y秒),聚合,写入hdfs,一旦上传完成,将每个分区的最新(最高)偏移量提交给kafka。如果机器或进程在db提交之前死掉 - 下一次迭代将从前一个地方开始。
在暴风雨中我可以创建批处理螺栓,它将锚定所有批处理元组并立即执行它们,但是我找不到将每个分区的最高偏移量提交到kafka的方法,因为spout不知道批处理,所以一旦批量螺栓响应了tupples,每个spout实例都会一个接一个地响应他的tupples,所以我就像我看到它一样:
答案 0 :(得分:0)
您的问题有很多,所以不确定这是否完全解决了它,但是如果您担心发送到 kafka 的确认数量(例如在每条消息之后),您应该能够为消耗,例如 1000 以减少很多。