2014-11-02 93 views
2

我想在集羣中的每臺機器上啓動特殊螺栓。在風暴集羣中的每臺機器上嚴格分配一個特殊螺栓

Storm有可插拔的調度程序,但文檔很少。 xumingming只有一個可以理解的example。如何使用IScheduler來實現這種模式?

我們有TCPBolt,監聽端口8765 TCPBolt並行==簇大小。我們需要在每臺機器上啓動這個螺栓的一個實例。

回答

0

示例和源代碼提供了足夠的演示代碼來執行此操作。

首先,您需要將TCPBolt的任務編號設置爲您的cluser的主機編號。

然後在你的IScheduler IMPL,使用private Map<String, SchedulerAssignmentImpl> assignments;數據來檢查TCPBolt被分配到一個主機(在SchedulerAssignmentImpl,使用數據Map<ExecutorDetails, WorkerSlot> executorToSlot;

最後,如果沒有分配,使用下面的代碼來分配

// re-get the aviableSlots 
availableSlots = cluster.getAvailableSlots(specialSupervisor); 
  
// since it is just a demo, to keep things simple, we assign all the 
// executors into one slot. 
cluster.assign(availableSlots.get(0), topology.getId(), executors); 

這只是一個粗略的想法。希望能幫助到你。