如何在Storm拓扑中实现本地字段分组?

时间:2014-07-02 01:35:07

标签: apache-storm

我想知道以下功能是否适用于Storm拓扑或 有钩子可以模拟它们:

  1. 本地字段分组。有Local Shuffle分组。本地字段 对于我们的某些用例,分组也可能是非常有用的功能 不希望尽可能地跨越工人的元组运动,而是保持 字段分组的好处。我在Storm 0.9.0.1代码库中进行了更改 (非apache)为此而且似乎正在运作
  2. 能够通过Spouts明确取消元组
  3. 能够查询元组的状态(通过其对象ID)
  4. 元组的生存时间。框架应该扔掉 任何未在生存时间内处理的元组
  5. 这些功能在某些用例中可能会有所帮助。或者功能可能已经存在。任何澄清都非常感谢。

1 个答案:

答案 0 :(得分:0)

1 - 本地字段分组并没有多大意义。字段分组意味着为给定字段发出的具有相同值的所有元组将由接收器螺栓的同一实例处理。 Local表示如果有给定螺栓的本地副本,则应该首选。这两个概念并不真正融合在一起。

2 - 我对风暴的内部结构并不熟悉,但我不明白这是如何运作的。每个接收元组的螺栓都会产生更多的元组。那些元组可以链接回他们的父母"元组构建一棵树回到原来的。能够取消"一个元组将需要(我猜)能够标记元组的所有子元素,以便生成的任何新元组都不会被处理。

3 - 请参阅上一个答案,跟踪此状态并暴露它可能会给风暴带来很多开销

4 - 请参阅https://storm.incubator.apache.org/documentation/Concepts.html中有关可靠性的部分。在可靠的喷口上实现fail方法可以实现类似的功能,但仅适用于spout发出的原始元组。