2016-02-01 2 views
0
  1. Я использую fields grouping со штормом.
  2. Проблема в том, что, поскольку у меня есть несколько машин и несколько болтов (очевидно), тогда tuple перемещается между машиной, и я подозреваю, что это резко снижает мою производительность.
  3. Возможно ли, чтобы конкретный результат группировки полей был специфичным для конкретной машины?
  4. Или более подробно для поля группировки account1 липких со всеми болтами к machine1account2 для machine3 для account3 быть липким для всех болтов к machine1 и так далее для каждого account, чтобы все его болты, работающих в конкретной одной машине?
  5. Обратите внимание, что, как только первые bolt процессы событие он излучает accountid в выходном наборе все дальше bolts с этой точки и имеют accountid смысл я хочу сделать field grouping с этого момента и на accountid для дальнейшего bolts в topology. (Добавлено для уточнения после просмотра первого ответа)
+0

http://stackoverflow.com/questions/36368224/is-there-a-way-to-apply-multiple-groupings-in-storm/36374837?noredirect=1#comment60465924_36374837 также обсуждает тот же вопрос. – user2250246

ответ

1
+0

- это детерминированное значение для определенного ключевого 'account1', возможно ли, что на одном кортеже он достигнет« локального болта » а другой - «дистанционный болт», или если он отправит что-то в «локальный болт», он продолжит работу с ним, а для 'account2', если его отправят на« удаленный болт », он продолжит отправку его на тот же самый« удаленный болт » , – Jas

1

Предположим, у вас есть 3 производителей P1, P2, P3 и три потребителей C1, C2, C3 и 3 машины каждый хостинг один производитель-потребитель-Pair, т.е. P1- С1. Кроме того, предположим, что у вас есть 3 различных значения ключа a,b,c. Кроме того, предположим, что C1 обрабатывает все кортежи с ключом a.

В общем, кортежи с ключом a могут испускаться всеми тремя производителями. Кроме того, P1 также может генерировать кортежи с ключом b или c. Таким образом, вы не можете ограничить передачу данных на локальные машины, используя группировку полей, все, что вам нужно, чтобы переразделить все данные.

Расширение

Если у вас есть дополнительные болты B1 до B3, который потребляет данные из С1-С3 и те, используют одни и те же поля, группирования ключ как С1-С3 (т.е. Bx может использовать уже данное разбиение из Cx), вам необходимо убедиться, что B1-B3 расположены на одном компьютере с C1-C3 и избегают повторного разбиения. Совместное размещение может быть достигнуто путем предоставления настраиваемого планировщика для Storm. Смотрите здесь для примера: https://xumingming.sinaapp.com/885/twitter-storm-how-to-develop-a-pluggable-scheduler/

Однако не использования поля группировки для подключения B1-> C1 и т.д., потому что поля-группировка агностик для оператора совместного размещения и уже заданных распределяли данные (это просто снова переформатируйте эти данные). Вместо этого вам нужно будет использовать прямую или настраиваемую группировку, чтобы гарантировать, что все данные из B1 отправляются на C1 и т. Д.

+0

То, что я думал о том, что есть каждая пара '(Px, Cx)' на всех машинах, и в моем случае, как только 'C1' испускает свои результаты, у нее есть' accountid' в этом результате, так что я может теперь и дальше делать 'fields grouping' на этом' accountid' все дальнейшие производители и потребители в этой топологии с этого момента и все будут иметь «учетную запись» в своих результатах, поэтому в этом случае у меня есть «учетная запись» во всех выходах, но первый вывод и планировал иметь все Px, Cx на всех хостах. любой случай, возможно, будет возможен с реализацией «шторма»? – Jas

+0

Я не могу следовать ... Что вы подразумеваете под «наличием каждой пары« (Px, Cx) »на всех машинах»? Я продлил свой ответ (надеюсь, что это касается второй части вашего вопроса - если я правильно вас понимаю) –

Смежные вопросы