我想在群集中的每台机器上启动特殊螺栓。
Storm有可插拔的调度程序,但文档很少。来自xumingming只有一个可理解的example。如何使用IScheduler
实现此模式?
示例
我们有TCPBolt
,它侦听端口8765. TCPBolt
parallelism ==群集大小。我们需要在每台机器上启动此螺栓的一个实例。
答案 0 :(得分: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);
这只是一个粗略的想法。希望它有所帮助。