2015-07-22 142 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

謝謝,很好解釋。 –