Как сделать возрождающуюся работу Hadoop Upstart?
Вы можете запустить экземпляр nodemanager, запустив yarn-daemon.sh start nodemanager
, Если вы делаете выскочку работы, если это, у вас есть две проблемы:
yarn-daemon.sh
Сценарий будет выполняться постоянно, так как респаун проверяет, не завершился ли процесс, и сценарий yarn-daemon.sh умирает после запуска yarn.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