Задайте строго един специален болт на всяка машина в storm cluster

Бих искал да стартирам специален болт на всяка машина в моя клъстер.

Storm има включен планировчик, но документацията е много оскъдна. Има само един разбираем пример от xumingming. Как може да се приложи този модел с помощта на IScheduler?

Пример

Имаме TCPBolt, който слуша порт 8765. TCPBolt паралелизъм == размер на клъстера. Трябва да стартираме по едно копие на този болт на всяка машина.


person mboadas    schedule 02.11.2014    source източник


Отговори (1)


Примерът и изходният код дават достатъчно демо код за това.

Първо трябва да зададете номера на задачата на 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);

Това е само груба идея. Дано помогне.

person DeepNightTwo    schedule 19.11.2014