2013-11-12 4 views
16

Есть ли чистый способ остановить шторм, не убив его с помощью «kill XXX», где XXX - это PID?Остановка бури: правильный путь

Я запускаю «штормовое уничтожение топологии-имени», чтобы убить топологию, но после этого есть ли чистый способ закрыть рабочих, нимбов, супервизор и ui?

я не нашел ни одной команды, которая соответствует этому из документации: https://github.com/nathanmarz/storm/wiki/Command-line-client

ответ

16

команду убить топологию (как вы правильно упомянули)

storm kill topology-name 

Теперь для завершения работы кластера необходимо запустить следующую команду для каждого узла

sudo service supervisord stop 

Дайте supervisord несколько секунд для остановки всех процессов. Обратите внимание, что попытка запустить supervisorctl когда supervisord сама останавливается приведет к сообщению об ошибке (это, кажется, известная проблема интерфейса пользователя в supervisord 2.x)

От this документации

Как убить ВСЕ Штормовые процессы, включая рабочие процессы? Любые рабочие потоки (запущенные демонами Supervisor на подчиненных узлах), которые выполняются при остановке кластера, будут продолжать работать. Это преднамеренное дизайнерское решение Storm, потому что это означает, что сбой/перезапуск демонов Nimbus и Supervisor не повлияют на какие-либо запущенные топологии в Storm. Недостатком является то, что вам нужно приложить дополнительные усилия для полной остановки всех связанных с Storm процессов в кластере.

# If you want to kill ALL processes follow this procedure on the slave nodes: 
    $ sudo supervisorctl stop storm-supervisor 
    $ sudo pkill -TERM -u storm -f 'backtype.storm.daemon.worker' 
+0

Я попробую это, спасибо за указание Супервизора с отличной ссылкой. – zenbeni

+0

u приветствуется :) .. было бы здорово, если бы вы могли поделиться своими выводами – user2720864

+0

Это хорошо работает, мне все же пришлось поместить полную команду (с java-сервером -Dstorm.options ...) для супервизора для работы со штормом в супервизоре .conf, это похоже на ошибку python между штормом и supervisord. Отлично, чтобы остановить все, и иметь надзор с автоматическим перезапуском и журналами. – zenbeni

2

От страницы, которые вы связаны с:

убить

Синтаксис: штормовое убийство топология-имя [-w wait-time-secs]

Ki lls топология с именем топологии-name. Storm сначала дезактивирует носители топологии на время таймаута сообщения топологии, чтобы все обработанные в данный момент сообщения обрабатывались для завершения обработки. Буря затем остановит рабочих и очистит их штат. Вы можете отменить длительность времени, в течение которого Storm ждет от дезактивации и выключения с помощью флага -w.

Как вы можете видеть, это предназначено для «чистого» выключения. Команда убивает рабочих.

+0

+1, не нужно убивать рабочих-штормов вручную, так как 'storm kill topology-name' убьет их для вас. Впоследствии, когда в кластере больше нет топологий, вы убиваете процессы Supervisor и Nimbus (и, возможно, процессы Storm UI и DRPC). – schiavuzzi

+0

Полезно знать. Тем не менее, я чувствую, что вам нужна абстракция при штормовых процессах, потому что я не хочу вручную убивать каждый процесс и перезапускать его. И бывают случаи, когда я хочу, чтобы все было остановлено. Supervisord кажется более элегантным, и я просил не «убивать» каждый процесс в любом случае, включая ui, nimbus и supervisor (супервизор делает это, а не я). – zenbeni

+0

Я вижу. Да ... если у вас несколько топологий, то «штормовой убой» недостаточно. –

0

Ну, если вы начали штурм, как ./storm нимб & ./storm супервизора &./ Ливневые ще затем

после этого вы можете забыли процесс идентификаторов в этом случае вы можете использовать JPS инструмент, чтобы узнать PID-то убить их как

$ ПАПКА_УСТАНОВКИ_JAVA/bin/JPS

3201 ConsoleConsumer

7528 Jps

2966 Кафка

3680 нимб

3681 руководитель

6749 Launcher

2669 QuorumPeerMain

убийство нимб первый

$ Sudo убить 3681

$ Sudo убить 3680

-1

Если вы используете шторм в Linux затем перейдите к ../storm/bin, введите следующую команду:

./storm ui & 

затем попал в браузер и введите адрес

http://127.0.0.1:8095/index.html 

Примечание: - порт 8095 по умолчанию порт ливневых ш.

enter image description here

после открытия топологии в новом теге вы можете найти ниже окна

enter image description here

этот шторм пользовательский интерфейс также полезен для мониторинга конфигурации. Мы можем легко убить любое количество топологий. Когда вы убьете свою топологию, рабочий также будет убит.

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