Storm&#39的OutputCollector如何工作?

时间:2016-09-11 18:30:10

标签: hadoop apache-storm

这是参考Storm's OutputCollector及其ack(Tuple)fail(Tuple)方法。

这两种方法都只是将调用转移到_delegate类型的IOutputCollector字段。

但是在看到IOutputCollector的类型层次结构时,似乎没有任何实现该接口的类可以对这些方法做一些有用的事情。

CoordinatedOutputCollectorAnchoringOutputCollector似乎正在针对自己的用例执行某些操作。

如果我使用已确认的元组运行具有至少一次传递语义的拓扑,那么使用什么类型的输出收集器?

或者更一般地说,OutputCollector如何在Storm中工作?

当Tuples从一个执行程序发送到另一个执行程序时,会涉及LMAX-disruptor队列和netty-callback。但是tuple-progression就像一个向前流,而ack() / fail()是向后流(因为(N+1)th螺栓acks /失败元组到它前面的Nth螺栓,一直到喷口)。

是否有关于如何使用OutputCollectors的好教程/博客?

1 个答案:

答案 0 :(得分:1)

BoltOutputCollectorImpl正是您要找的。 ackfail条消息都会发送到Acker bolt。当阿克尔及时收到所有螺栓的响应时,它会发出一条确认信息给鲸鱼喷水;否则,它将发回失败消息。

您可能还想结帐SpoutOutputCollectorImplSpoutExecutorBoltExecutor以获取完整的流程。

请注意,以上链接来自Apache Storm trunk,版本为2.0.0-SNAPSHOT,尚未发布。对于以前的Storm版本,OutputCollector的实现在Clojure中。