Como fazer um trabalho de inicialização do Hadoop?

1

Você pode iniciar uma instância de nodemanager executando yarn-daemon.sh start nodemanager . Se você fizer um trabalho inicial, tenha dois problemas:

  1. O script yarn-daemon.sh será executado constantemente, pois o respawn verifica se o processo morreu e o script yarn-daemon.sh morre depois de iniciar o fio.
  2. O comando service nodemanager stop não faz nada porque o upstart acha que o processo já está parado.

Como posso criar um serviço iniciante que reinicia o fio (ou outro daemon hadoop) após uma falha?

    
por Galgalesh 24.04.2015 / 11:53

1 resposta

1

O código abaixo mostra o arquivo de configuração do serviço upstart /etc/init/nodemanager.conf . Você executa o script yarn-daemon.sh start nodemanager como gancho pré-início e yarn-daemon.sh stop nodemanager como gancho pós-parada. Isso inicia a instância real do nodemanager.

O script verifica se o nodemanager está ativo. Se o nodemanager estiver inativo, o script será encerrado. Isso sinaliza que o serviço foi desativado e precisa ser reiniciado.

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
    
por Galgalesh 24.04.2015 / 11:53