Как сделать возрождающуюся работу Hadoop Upstart?

Вы можете запустить экземпляр nodemanager, запустив yarn-daemon.sh start nodemanager, Если вы делаете выскочку работы, если это, у вас есть две проблемы:

  1. yarn-daemon.sh Сценарий будет выполняться постоянно, так как респаун проверяет, не завершился ли процесс, и сценарий yarn-daemon.sh умирает после запуска yarn.
  2. service nodemanager stop Команда ничего не делает, потому что выскочка думает, что процесс уже остановлен.

Как я могу сделать выскочку службы, которая перезапускает пряжу (или другой демон hadoop) после сбоя?

1 ответ

Решение

Код ниже показывает файл конфигурации службы upstart /etc/init/nodemanager.conf, Вы выполняете yarn-daemon.sh start nodemanager сценарий в качестве предпускового крючка, и yarn-daemon.sh stop nodemanager как пост-стоп крюк. Это запускает фактический экземпляр nodemanager.

Скрипт проверяет, работает ли nodemanager. Если nodemanager не работает, скрипт завершается. Это сигнализирует upstart, что служба вышла из строя и должна быть перезапущена.

description "nodemanager"

start on startup
stop on shutdown

setuid hduser

respawn

# actually start nodemanager
pre-start exec opt/hadoop/current/sbin/yarn-daemon.sh start nodemanager

#
# upstart executes this script. If this script exits, upstart respawns the service
# cannot just excecute *-daemon.sh here, because the actual daemon script excecutes after start
#   and upstart thinks service is stopped so respawns *-daemon.sh constantly.
#
script
  while jps | grep -q NodeManager; do
    sleep 5
  done
end script

post-stop exec /opt/hadoop/current/sbin/yarn-daemon.sh stop nodemanager
Другие вопросы по тегам