Может ли twitter storm worker получить только часть топологии?

Предположим, что у вас есть следующая топология

носик

spout (sends tuple to )bolt1
bolt1 (sends tuple to) bolt2

и следующие настройки:

3 рабочих процесса

spout,parallel hint=1
bolt1, parallel hint=2
bolt2,parallel hint=3

мои вопросы:

  • Прав ли я со следующим (возможным) распределением среди рабочих:

    Worker1                  
       spout1
       bolt 2 
    Worker2
       bolt 1
       bolt 2
    Worker3
      bolt1
      bolt 2
    
  • В приведенных выше условиях будет ли болт1 (от рабочего2, рабочего3) получить какой-либо кортеж от носика?
  • Болт 2 от рабочего 1 получит данные от болта 1?
  • Должны ли мы соблюдать пропорциональную пропорцию между количеством рабочих и носиков/болтов, чтобы каждому из рабочих достался хотя бы один носик/или болт?

person florins    schedule 31.01.2014    source источник


Ответы (2)


Вам нужно различать, как различные задачи распределяются между вашими рабочими, и группировка между вашими носиками и болтами. Группировка определяет, как кортежи маршрутизируются в вашей топологии. Например, если вы используете группировку «все» между носиком и болтом1, каждая задача в болте1 будет получать каждый кортеж, отправленный носиком. Storm имеет много разных группировок, я предлагаю вам внимательно прочитать страницу концепции Storms, которая должна ответить на ваши вопросы: https://github.com/nathanmarz/storm/wiki/Concepts.

person Philip Thyssen    schedule 31.01.2014

Короче говоря, вам не нужно беспокоиться о том, какой работник обрабатывает конкретную задачу. Storm заботится о маршрутизации сообщений, поэтому вам не нужно обращать на это внимание. В этом случае все будет работать как положено: spout будет отправлять кортежи на воркеры Bolt1, а воркеры botl1 будут отправлять кортежи на воркеры Bolt2, независимо от того, где они физически расположены в кластере.

Тем не менее, вы несколько не правы в отношении распределения задач между работниками. Рабочий может содержать задачи только для одного болта или патрубка за раз. Однако супервизор может запускать несколько рабочих процессов, и в этом случае у вас будет несколько задач с разными болтами или носиками, работающими на одном и том же оборудовании, но в разных процессах.

person G Gordon Worley III    schedule 02.02.2014
comment
Извините, я считаю, что данный Worker (или процесс) может содержать задачи для любого количества болтов/носиков. У меня сейчас работает топология с одним рабочим носиком DRPC и 4 болтами, каждый из которых выполняет несколько задач. Насколько я понимаю, данная задача (или поток) будет выполнять только один носик/болт. - person Angelo Genovese; 15.03.2014