在暴风雨中提到没有任务的相关性是什么

时间:2015-07-09 17:09:50

标签: apache-storm

我只是想知道actual relevance of using tasks in storm with respect to the output or performance是什么,因为它不需要对并行性做任何事情,所以为组件选择多于1个任务will make any change in output? or what will be the flow than?或者如果我选择tasks > executors 1}}如何在流量或输出方面产生差异(这里我只是采用基本的单词计数示例)。 如果有人可以在有或没有例子的情况下向我解释这将是非常有帮助的。

例如说 - 我有一个topology with 3 bolts and 1 spout,我只提到2 workers port,这意味着所有这4个组件(1个点和3个螺栓只能在这些工人上运行)现在我已经提到了{{1}比它意味着该螺栓的2个螺纹将并行运行。现在,如果我提到2 executors for 1st bolt no of task=3 如果我已经提到了how will this make difference whether in output or performance?,那么分组会出现在不同的执行者身上(如果我错了,请纠正我)?

1 个答案:

答案 0 :(得分:2)

你读过这篇文章了吗? https://storm.apache.org/documentation/Understanding-the-parallelism-of-a-Storm-topology.html

选择示例:如果设置#tasks=3并使用2 executors指定fieldsGrouping,数据将被划分为3个子流(= #tasks)。 2个子流进入一个执行器,第三个进入第二个执行器。但是,使用3个任务和2个执行程序,允许您使用rebalance命令将执行程序数增加到3个。

只要您不想在执行期间增加执行程序的数量,#task应该等于#executors(即,不要指定#tasks)。

对于您的示例(如果您不想在运行时更改并行度),您很可能会为两个执行程序创建不平衡工作负载(一个执行程序处理33%的数据,另外66%处理)。但是,这只是这种特殊情况下的问题而不是一般情况。如果假设您有4个任务,则每个执行程序处理2个子流并且不会发生不平衡。