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);
这只是一个粗略的想法。希望能帮助到你。