gpt4 book ai didi

apache-storm - Storm 中任务 ID、消息 ID 和流 ID 之间的区别?以及 "anchoring tuples"和 "acker tasks"与上下文有何关系?

转载 作者:行者123 更新时间:2023-12-02 06:16:08 28 4
gpt4 key购买 nike

我想知道它们之间的区别,以及它们之间的关系,以及“anchoring tuples”和“acker tasks”的作用是什么。如果可能,请提供详细的解释和示例。我已经阅读了官方文档和一些相关文章,但我对这个主题的理解不清楚。

最佳答案

StreamID:默认情况下有一个名为 default 的(逻辑)流。在某些用例中,有必要的不是单个(逻辑)流,而是多个(每个流中有不同的数据)。为此,您可以声明其他流并为它们分配一个 ID(即名称)以区分它们(这是在 declareOutputFields(...) 方法中完成的)。当“插入”您的拓扑结构时,默认情况下,您总是分配给默认流(作为输入流),但您也可以明确指定要接收的流的名称。

任务 ID。每个 Spout/Bolt 都有一个指定的并行度(即并行度,dop)。因此,每个 Spout/Bolt 都在多个任务中执行,并且每个任务都分配了一个 ID,以便可以区分它们。

MessageID:如果您想使用容错机制,您需要为 Spouts 发出的每个元组分配一个唯一的 ID。

Acker 任务:那些用于处理来自您的 bolt 的 ack 消息(即,当您调用 collector.ack( ...)collector.fail(...)) 来跟踪元组是成功处理还是失败。你通常不需要关心它们。

锚定:锚定是一种告诉 Storm 哪些输入元组用于生成哪些输出元组的机制。例如,如果你有一个 Bolt,它将一个句子分成单词并为每个单词发出一个元组,你会将所有单词锚定到同一个句子。 (如果单词元组中的一个失败,Storm 知道它需要回复句子元组以便恢复丢失的元组)。另一方面,如果您汇总最后 5 个输入元组来计算平均值,您将缓冲所有 5 个输入元组,直到发出平均元组并将所有 5 个输入元组用作此单个 avg 输出元组的 anchor 。 (同样,如果输出元组丢失,Storm 知道它需要回复所有 5 个输入元组,以便可以重新计算丢失的平均元组)。请注意,您不能将元组用作 anchor ,它们已经被 Storm 确认。因此,您需要延迟确认输入元组,直到不再需要它作为 anchor 元组。

关于apache-storm - Storm 中任务 ID、消息 ID 和流 ID 之间的区别?以及 "anchoring tuples"和 "acker tasks"与上下文有何关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31489627/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com