2016-08-17 34 views
0

我想編寫一個CustomGrouping,它將一個螺栓的排放傳播到同一節點上運行的另一個螺栓。 LocalOrShuffleGrouping通過嘗試在相同的過程中保留元組來部分實現這一點。我想更進一步,並在機器級別上綁定。這裏的主要目的是減少網絡延遲,從而提高吞吐量(不受帶寬限制)。如何確定在Apache Storm中節點上運行的任務

我知道你可以通過從TopologyContext調用getThisWorkerTasks()來獲得在同一個工作進程中運行的taskIDs。但是,我找不到一種方法來獲取在同一節點上運行的所有任務ID(包括其他進程的任務ID)。

回答

0

我想我們沒有API來做到這一點。做到這一點的一種方式是,下游螺栓將其主機名(或IP)和taskId發送到所有上游螺栓(通過全局流),並通過上游螺栓中的信息確定發送元組的最佳螺栓。爲了發送主機名,你可以使用tick元組。

+0

謝謝拉欣!我也在考慮這一點,我覺得這可能會導致網絡流量增加,因爲我會進行全球分組。當然,我必須在結束之前運行一些基準。 – k008

+0

我覺得每次都不需要發送主機信息。第一次是足夠的,所以它不會影響網絡流量。 –

+0

是嗎?因此,一旦工作進程產生執行者並生成任務ID,它們將始終保持一致嗎?即使執行者以後再開始使用另一個螺栓? – k008

相關問題