2014-11-02 71 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); 

这只是一个粗略的想法。希望能帮助到你。