Вы можете запустить экземпляр nodemanager, запустив yarn-daemon.sh start nodemanager
. Если вы выполняете задание upstart, если это так, у вас есть две проблемы:
yarn-daemon.sh
будет выполняться постоянно, так как респаун проверяет, не завершился ли процесс, и сценарий yarn-daemon.sh умирает после запуска пряжи. service nodemanager stop
команда ничего не делает, потому что выскочка думает, что процесс уже остановлен. Как я могу сделать выскочку службы, которая перезапускает пряжу (или другой демон hadoop) после сбоя?
Код ниже показывает новомодный сервисный конфигурационный файл /etc/init/nodemanager.conf
. Вы выполняетесь yarn-daemon.sh start nodemanager
сценарий, как предварительно запускают рычаг, и yarn-daemon.sh stop nodemanager
как рычаг постостановки. Это запускает фактический nodemanager экземпляр.
сценарий проверяет, произошел ли nodemanager. Если nodemanager снижается, выходы сценария. Это сигнализирует выскочке, по которой сервис спустился и должен быть перезапущен.
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