Обновление Apache Strom с 1.0.3 до 2.2.0, и не все рабочие используются

#apache-storm #apache-storm-topology #storm-topology

#apache-storm #apache-storm-topology #storm-топология

Вопрос:

Я обновляю Apache Storm с 1.0.3 до 2.2.0 и сталкиваюсь со своеобразной проблемой, когда задачи топологии выполняются не на всех рабочих и выполняются только на том же рабочем, что и Spout.

Я использую группировку в случайном порядке и настроил 6 рабочих и в общей сложности 51 исполнителя среди 2 болтов и 1 носика. Когда я запускаю топологию, все 6 рабочих запускаются, как и ожидалось, но только один рабочий с носиком выполняет всю работу.

Нужна ли мне какая-либо специальная конфигурация для 2.2.0, все мои топологии работают нормально с версией 1.0.3

В качестве теста я также запускаю ExclamationTopology из Strom-starter, но вижу ту же проблему, что только один рабочий выполняет всю работу.

Заранее спасибо за любую помощь.

С уважением,

Ответ №1:

При обновлении до storm 2.0.0 я был озадачен поведением, которое вы также наблюдали. Причина кроется в случайной группировке, которую вы используете. Согласно руководству по производительности storm:

  1. Обмен сообщениями с поддержкой загрузки

Когда включен обмен сообщениями с учетом нагрузки (по умолчанию), группировка в случайном порядке учитывает дополнительные факторы для маршрутизации сообщений. Влияние этого на производительность зависит от топологии и ее места развертывания (т. Е. Распределения по процессам и машинам). Следовательно, полезно оценить влияние настройки topology.disable.loadaware.messaging в true или false для вашего конкретного случая.

Это приводит к тому, что spout делегирует все кортежи тому же рабочему, на котором он находится. Чтобы исправить это и вернуться к старому поведению, в вашей топологии установите topology.disable.loadaware.messaging значение true , например, с

 conf.put("topology.disable.loadaware.messaging", true);
  

Комментарии:

1. Это отличная информация, спасибо за ваш ответ. Позвольте мне попробовать это.

2. Надеюсь, это сработает, дайте нам знать, если это так, спасибо!