2
我想在集羣中的每臺機器上啓動特殊螺栓。在風暴集羣中的每臺機器上嚴格分配一個特殊螺栓
Storm有可插拔的調度程序,但文檔很少。 xumingming只有一個可以理解的example。如何使用IScheduler
來實現這種模式?
例
我們有TCPBolt
,監聽端口8765 TCPBolt
並行==簇大小。我們需要在每臺機器上啓動這個螺栓的一個實例。
我想在集羣中的每臺機器上啓動特殊螺栓。在風暴集羣中的每臺機器上嚴格分配一個特殊螺栓
Storm有可插拔的調度程序,但文檔很少。 xumingming只有一個可以理解的example。如何使用IScheduler
來實現這種模式?
例
我們有TCPBolt
,監聽端口8765 TCPBolt
並行==簇大小。我們需要在每臺機器上啓動這個螺栓的一個實例。
示例和源代碼提供了足夠的演示代碼來執行此操作。
首先,您需要將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);
這只是一個粗略的想法。希望能幫助到你。