Acessar logs do aplicativo Apache Hadoop YARN no HDInsight baseado em Linux

Saiba como acessar os logs para os aplicativos Apache Hadoop YARN (Ainda Outro Negociador de Recursos) em um cluster do Apache Hadoop no Azure HDInsight.

O que é o Apache YARN?

O YARN dá suporte para vários modelos de programação (Apache Hadoop MapReduce sendo um deles) desacoplando o gerenciamento de recursos do agendamento/monitoramento de aplicativos. O YARN usa um ResourceManager (RM) global, NodeManagers (NMs) por nó de trabalho e ApplicationMasters (AMs) por aplicativo. O aplicativo AM negocia recursos (CPU, memória, disco e rede) para executar o aplicativo com o RM. O RM atua junto com os NMs para conceder esses recursos na forma de contêineres. O AM é responsável por controlar o andamento dos contêineres atribuídos pelo RM. Um aplicativo pode exigir um número de contêineres dependendo da natureza do aplicativo.

Cada aplicativo pode consistir em várias tentativas do aplicativo. Se um aplicativo falhar, ele poderá ser repetido como uma nova tentativa. Cada tentativa é executado em um contêiner. De certa forma, um contêiner dá o contexto para a unidade básica de trabalho executado por um aplicativo YARN. Todo trabalho feito no contexto de um contêiner é executado no nó de trabalho único no qual o contêiner foi alocado. Confira Hadoop: escrevendo aplicativos YARN ou Apache Hadoop YARN para referência.

Para escalar o cluster para aumentar a taxa de transferência de processamento, você pode usar o dimensionamento automático ou dimensionar os clusters manualmente usando algumas linguagens diferentes.

Servidor de linha do tempo do YARN

O Servidor de Linha de Tempo do Apache Hadoop YARN fornece informações genéricas sobre aplicativos concluídos

O YARN Timeline Server inclui o seguinte tipo de dados:

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

Aplicativos e logs YARN

Os logs de aplicativos (e os logs de contêiner associado) são essenciais na depuração de aplicativos problemáticos do Hadoop. O YARN fornece uma ótima estrutura para coletar, agregar e armazenar logs de aplicativos com a agregação de logs.

O recurso de agregação de logs permite acessar logs de aplicativos mais determinista. Ele agrega logs em todos os contêineres em um nó de trabalho e as armazena como um arquivo de log agregado por nó de trabalho. O log é armazenado no sistema de arquivos padrão após a conclusão de um aplicativo. O aplicativo deve usar centenas ou milhares de contêineres, mas logs para todos os contêineres executados em um nó único de trabalhado sempre são agregados a um único arquivo. Portanto, há apenas um log por nó de trabalho usado pelo seu aplicativo. A Agregação de Log é habilitada por padrão em clusters HDInsight versão 3.0 e superior. Logs agregados estão localizados no armazenamento padrão do cluster. O caminho a seguir é o caminho do 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 RM do YARN.

Os logs agregados não podem ser lidos diretamente, pois são escritos em um TFile formato binário indexado por contêiner. Use as ferramentas dos logs ResourceManager do YARN ou CLI para exibir os logs dos aplicativos ou contêineres de interesse como texto sem formatação.

Logs do Yarn em um cluster ESP

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

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

  2. Na IU do Ambari, acesse MapReduce2>Configurações>Avançadas>Site mapred personalizado.

  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 CLI do YARN

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

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

    yarn top
    

    Observe a ID do aplicativo na coluna APPLICATIONID, 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. É possível 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 exemplos de comando

  1. Baixe os logs dos contêineres do Yarn para todos os mestres de aplicativos com o comando a seguir. Essa etapa cria o arquivo de log denominado amlogs.txt em formato de texto.

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

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

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

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

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

IU ResourceManager do YARN

A IU ResourceManager do YARN é executada no nó de cabeçalho do cluster. Ele é acessado por meio da interface do usuário da Web do Ambari. Execute as etapas a seguir para exibir os logs do YARN:

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

  2. Na lista de serviços à esquerda da página, selecione YARN.

    Apache Ambari Yarn service selected.

  3. Na lista suspensa Links rápidos, selecione um dos nós principais do cluster e selecione ResourceManager Log.

    Apache Ambari Yarn quick links.

    Você verá uma lista de links para os logs do YARN.

Próximas etapas