2015-04-22 33 views
4

爲了測試/調試目的,是否有一種簡單的方法來手動殺死風暴集羣中的任務?最好的辦法是從暴風雨中啓用它。即使風暴應該重新分配失敗的任務,當它發生時測試我們的代碼也是很好的。在Apache Storm中手動殺死一個任務

當然,我可以在某些條件下在代碼中添加'throw RuntimeException'來這樣做,但它需要手動編碼,或許在風暴體系結構中有一個函數?

+0

想要殺死某個拓撲或拓撲的工作者嗎 – Shams

回答

2

任務是作爲處理執行者的邏輯工作單元。執行程序是工作程序JVM中的線程。因此,手動殺死單個任務(通過在命令行中殺死)的唯一方法是將任務數設置爲等於執行者數(默認值),並提供比執行者更多的工作者(即#workers>總和(每個噴嘴/螺栓的數量),擁有比執行者更多的工作者確保每個工作者都運行一個執行者

+0

您只是說唯一的測試風暴重新分配任務的方法是使用「風暴重新平衡」命令嗎?我很害怕這樣做,因爲它很長,難以自動化。 – zenbeni

+0

不,我猜想有一種理解錯誤。指的是「風暴殺死」,而是指Linux「殺死」手動終止工作者JVM。 –