Partilhar via


Aceder aos registos de aplicações do YARN do Apache Hadoop no HDInsight baseado no Linux

Saiba como acessar os logs para aplicativos Apache Hadoop YARN (Yet Another Resource Negotiator) em um cluster Apache Hadoop no Azure HDInsight.

O que é Apache YARN?

O YARN suporta vários modelos de programação (Apache Hadoop MapReduce é um deles) dissociando o gerenciamento de recursos do agendamento/monitoramento de aplicativos. O YARN usa um NodeManagers (NMs) global ResourceManager (RM), por nó de trabalhador e ApplicationMasters (AMs) por aplicativo. O AM por aplicativo negocia recursos (CPU, memória, disco, rede) para executar seu aplicativo com o RM. O RM trabalha com NMs para conceder esses recursos, que são concedidos como contêineres. O AM é responsável por acompanhar o progresso dos contentores que lhe são atribuídos pelo RM. Um aplicativo pode exigir muitos contêineres, dependendo da natureza do aplicativo.

Cada aplicação pode consistir em várias tentativas de candidatura. Se um aplicativo falhar, ele pode ser tentado novamente como uma nova tentativa. Cada tentativa é executada em um contêiner. Em certo sentido, um contêiner fornece o contexto para a unidade básica de trabalho feito por um aplicativo YARN. Todo o trabalho que é feito dentro do contexto de um contêiner é feito no nó de trabalhador único no qual o contêiner foi fornecido. Consulte Hadoop: Escrevendo aplicativos YARN ou Apache Hadoop YARN para obter mais referências.

Para dimensionar seu cluster para oferecer suporte a uma maior taxa de transferência de processamento, você pode usar Autoscale ou Dimensionar seus clusters manualmente usando alguns idiomas diferentes.

Servidor de linha do tempo do YARN

O Apache Hadoop YARN Timeline Server fornece informações genéricas sobre aplicativos concluídos

O YARN Timeline Server inclui o seguinte tipo de dados:

  • O ID do aplicativo, um identificador exclusivo de um aplicativo
  • O usuário que iniciou o aplicativo
  • Informações sobre as tentativas feitas para completar o pedido
  • Os contêineres usados por qualquer tentativa de aplicativo

Aplicações e registos YARN

Os logs de aplicativos (e os logs de contêiner associados) são essenciais na depuração de aplicativos Hadoop problemáticos. O YARN fornece uma boa estrutura para coletar, agregar e armazenar logs de aplicativos com a Agregação de Logs.

O recurso Agregação de Log torna o acesso aos logs do aplicativo mais determinístico. Ele agrega logs em todos os contêineres em um nó de trabalho e os armazena como um arquivo de log agregado por nó de trabalho. O registo é armazenado no sistema de ficheiros predefinido após uma aplicação terminar. Seu aplicativo pode usar centenas ou milhares de contêineres, mas os logs de todos os contêineres executados em um único nó de trabalho são sempre agregados a um único arquivo. Portanto, há apenas um log por nó de trabalho usado pelo seu aplicativo. A Agregação de Registos é ativada por predefinição nos clusters da versão 3.0 ou superior do HDInsight. Os registos agregados estão localizados no armazenamento predefinido do cluster. O caminho a seguir é o caminho HDFS para os logs:

/app-logs/<user>/logs/<applicationId>

No caminho, user é o nome do usuário que iniciou o aplicativo. O applicationId é o identificador exclusivo atribuído a um aplicativo pelo YARN RM.

Os logs agregados não são diretamente legíveis, pois são gravados em um TFileformato binário indexado por contêiner. Use os logs do YARN ResourceManager ou as ferramentas da CLI para exibir esses logs como texto sem formatação para aplicativos ou contêineres de interesse.

Logs do Yarn em um cluster ESP

Duas configurações devem ser adicionadas ao costume mapred-site no Ambari.

  1. Em um navegador da Web, navegue até https://CLUSTERNAME.azurehdinsight.net, onde CLUSTERNAME é o nome do cluster.

  2. Na interface do usuário do Ambari, navegue até MapReduce2>Configs>Advanced>Custom mapred-site.

  3. Adicione um dos seguintes conjuntos de propriedades:

    Conjunto 1

    mapred.acls.enabled=true
    mapreduce.job.acl-view-job=*
    

    Conjunto 2

    mapreduce.job.acl-view-job=<user1>,<user2>,<user3>
    
  4. Salve as alterações e reinicie todos os serviços afetados.

Ferramentas YARN CLI

  1. Use o comando ssh para se conectar ao cluster. Edite o seguinte comando substituindo CLUSTERNAME pelo nome do cluster e digite o comando:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  2. Liste todos os IDs de aplicativo dos aplicativos Yarn em execução no momento com o seguinte comando:

    yarn top
    

    Anote o ID do aplicativo na APPLICATIONID coluna cujos logs devem ser baixados.

    YARN top - 18:00:07, up 19d, 0:14, 0 active users, queue(s): root
    NodeManager(s): 4 total, 4 active, 0 unhealthy, 0 decommissioned, 0 lost, 0 rebooted
    Queue(s) Applications: 2 running, 10 submitted, 0 pending, 8 completed, 0 killed, 0 failed
    Queue(s) Mem(GB): 97 available, 3 allocated, 0 pending, 0 reserved
    Queue(s) VCores: 58 available, 2 allocated, 0 pending, 0 reserved
    Queue(s) Containers: 2 allocated, 0 pending, 0 reserved
    
                      APPLICATIONID USER             TYPE      QUEUE   #CONT  #RCONT  VCORES RVCORES     MEM    RMEM  VCORESECS    MEMSECS %PROGR       TIME NAME
     application_1490377567345_0007 hive            spark  thriftsvr       1       0       1       0      1G      0G    1628407    2442611  10.00   18:20:20 Thrift JDBC/ODBC Server
     application_1490377567345_0006 hive            spark  thriftsvr       1       0       1       0      1G      0G    1628430    2442645  10.00   18:20:20 Thrift JDBC/ODBC Server
    
  3. Você pode exibir esses logs como texto sem formatação executando um dos seguintes comandos:

    yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application>
    yarn logs -applicationId <applicationId> -appOwner <user-who-started-the-application> -containerId <containerId> -nodeAddress <worker-node-address>
    

    Especifique as <informações applicationId>, <user-who-started-the-application>, <containerId> e <worker-node-address> ao executar esses comandos.

Outros comandos de exemplo

  1. Baixe os logs de contêineres do Yarn para todos os mestres de aplicativos com o seguinte comando. Esta etapa cria o arquivo de log nomeado amlogs.txt em formato de texto.

    yarn logs -applicationId <application_id> -am ALL > amlogs.txt
    
  2. Baixe os logs de contêiner do Yarn apenas para o mestre de aplicativos mais recente com o seguinte comando:

    yarn logs -applicationId <application_id> -am -1 > latestamlogs.txt
    
  3. Baixe os logs de contêiner do YARN para os dois primeiros mestres de aplicativos com o seguinte comando:

    yarn logs -applicationId <application_id> -am 1,2 > first2amlogs.txt
    
  4. Baixe todos os logs de contêiner do Yarn com o seguinte comando:

    yarn logs -applicationId <application_id> > logs.txt
    
  5. Baixe o log de contêiner do yarn para um contêiner específico com o seguinte comando:

    yarn logs -applicationId <application_id> -containerId <container_id> > containerlogs.txt
    

IU YARN ResourceManager

A interface do usuário do YARN ResourceManager é executada no nó principal do cluster. Ele é acessado através da interface do usuário da Web do Ambari. Use as seguintes etapas para exibir os logs do YARN:

  1. No navegador da Web, navegue até https://CLUSTERNAME.azurehdinsight.net. Substitua CLUSTERNAME pelo nome do cluster do HDInsight.

  2. Na lista de serviços à esquerda, selecione YARN.

    Apache Ambari Yarn service selected.

  3. No menu suspenso Links Rápidos, selecione um dos nós principais do cluster e selecione ResourceManager Log.

    Apache Ambari Yarn quick links.

    É apresentada uma lista de links para logs do YARN.

Próximos passos