2015-07-22 145 views
2

拓扑与分配给查询规范化 Topology with 1 executor assigned to Query NormalizerApache Storm:执行程序之间的关系,执行延迟和进程延迟?

拓扑与分配给查询规范化 Topology with 4 executor assigned to Query Normalizer

起初我跑我的拓扑只有分配给QueryNormalizer执行4执行人1个执行人。 执行延迟8.952进程延迟12.857

为了使其更快我改变执行人的数量QueryNormalizer到 .The 执行所延迟改变为197.616过程延迟59.132

根据的定义执行延迟 - Tuple在执行方法中花费的平均时间。执行方法可以在不为元组发送确认的情况下完成。

所以,我的理解是,如果我增加执行者的数量,它应该很低。随着执行者的增加,并行性应该会增加。

我误解了什么吗?

此外,发射,传输和执行的字段之间存在巨大差异。这是正常的吗?

此外,过程延迟是否应始终低于执行延迟?

以上显示的哪个拓扑性能更好?另外,如何查看哪些拓扑结构比其他拓扑结构运行更好,查看螺栓数据?

回答

3

查看喷嘴中的“完全延迟”,即元组在平均内部在拓扑中花费的值,它已经规定。

所以,我的理解是,如果我增加执行程序的数量,它应该是低的。随着执行程序的增加,并行性应该会增加。

这意味着你现在有4个单元处理元组,每个单元在当时处理1个元组,“理论上”让你在同一时间处理4个元组,而不是1.你的元组看起来总是一样吗?这是,他们总是有相同的复杂性?

Also, there is a huge difference between the emitted,transmitted and executed fields. Is this normal ? 

执行意味着你的螺栓多少元组消耗;发射意味着你的螺栓生成了多少个元组(在你的情况下,我看到每个消耗的元组产生大约4个新元组)。转移意味着有多少发射的元组被转移到其他螺栓上,例如你有两个螺栓从螺栓发射消耗,在这种情况下,转移将等于2 * nr发射的元组。

此外,过程延迟是否应始终低于执行延迟?

不necessaly,有例如在Nathan Marz定义:

Process latency is time until tuple is acked, execute latency is time spent in execute for a tuple 

,我可以给你哪里不这样做我的拓扑结构的一个示例:

enter image description here

Which of the above shown topologies are better performance wise ? Also, How should I decide which topology is running better than the other , seeing the bolts data ? 

让他们跑得更长一段时间。两者都处理少于1000个元组,样本的大小太小。最终,度量标准是“喷嘴完整延迟”和失败元组数

+1

谢谢,很好解释。 –