8

我一直在阅读有关Storm的信息,并在使用 Storm-starter 中的示例。

我想我明白了这个概念,它非常适用于许多情况。我有一个我想做的测试项目来了解更多关于这方面的信息,但我想知道 Storm 是否真的适合这个。

我遇到的概念问题是“流”定义。似乎 Storms 将作为订阅流并实时处理它的魅力,但我并没有真正的流,而是我想要处理的有限数据集合。

我知道这有 hadoop,但我对 Storm 的实时功能以及编写 Storm 的 Nathan 在他的演讲中提到的其他有趣点很感兴趣。

所以我想知道,人们是否编写 Spout 来轮询非流 API,然后区分结果可能是为了模拟流?

第二个重点是,似乎 Storm 拓扑在中断之前永远不会完成处理,这同样不适用于我的情况。我希望我的拓扑知道,一旦我的有限源数据列表完成,处理就可以终止并可以发出最终结果。

那么,从 Storm 的角度来看,这一切都有意义吗?还是我看错了?如果是这样,对于这种实时并行计算需求,您提出了哪些替代方案?

谢谢!

4

3 回答 3

6

在暴风谷歌群里找到了答案。似乎 DRCP 拓扑将发出一个带有参数的元组,该参数由 DRCP spout 作为流接收,然后在处理完成时指示回来(使用称为请求 ID 的唯一 ID)。

在同一个线程中说hadoop可能最适合这些情况,除非数据不够大并且可以一直完全处理。

于 2012-02-21T14:26:08.257 回答
0

当然可以使用 Storm 来处理有限的数据集合,并在处理完所有元素后停止。DRPC 拓扑是实现此目的的一种方法,但推出您自己的解决方案并不难。

这个想法是跟踪有限数据集中的哪些元素已被处理,这很容易在 Spout 中使用 ack() 和 fail() 方法完成。

于 2013-06-26T19:21:03.840 回答
0

如果您正在寻找一种快速、可交互使用且对开发人员友好的批处理解决方案,您可能希望查看Apache Spark而不是 Storm。

当您想要在连续计算上运行查询时,Trident/DRPC 会更有用。

于 2014-04-10T16:30:00.273 回答