Coleta de dados de diagnóstico do cluster do Dataproc

"Ver dados de diagnóstico do cluster do Dataproc"

Você pode aproveitar os seguintes recursos de coleta de dados de diagnóstico do Dataproc para resolver problemas de cluster e job:

Coleta de dados de diagnóstico de checkpoint

Por padrão, o Dataproc coleta dados de diagnóstico de ponto de verificação durante as operações de criação de cluster, atualização de cluster e job do Dataproc.

Local dos dados do checkpoint

O Dataproc salva dados de diagnóstico de checkpoint no bucket temporário do cluster no Cloud Storage na seguinte pasta (checkpoint diagnostic data folder):

gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID 

O bucket temporário padrão do cluster tem um período de armazenamento de TTL de 90 dias. Os dados são excluídos ao final do período de armazenamento. É possível especificar seu próprio bucket temporário do cluster com um período de TTL diferente ao criar um cluster.

Dados de diagnóstico de checkpoint

  • Registros detalhados do nó do cluster:o Dataproc executa os seguintes comandos para coletar e gravar informações do YARN e do HDFS nos seguintes locais na pasta de dados de diagnóstico do ponto de verificação no Cloud Storage.

    Comando executado Localização na pasta de diagnóstico
    yarn node -list -all .../nodes/timestamp/yarn-nodes.log
    hdfs dfsadmin -report -live -decommissioning .../nodes/timestamp/hdfs-nodes.log

  • Detalhes do job:o Dataproc salva informações de jobs do MapReduce e registros de jobs do Spark para jobs que usam a API Dataproc Jobs. Esses dados são coletados para cada job do MapReduce e do Spark enviado.

    • MapReduce job.xml: um arquivo com configurações de configuração de job, salvo em .../jobs/JOB_UUID/mapreduce/job.xml.
    • Registros de eventos do Spark: detalhes da execução do job úteis para depuração, salvos em .../jobs/JOB_UUID/spark/application-id.
  • Informações do sistema Linux:o Dataproc executa os seguintes comandos para coletar e salvar informações do sistema nos seguintes locais na pasta de dados de diagnóstico do ponto de verificação no Cloud Storage.

    Comando Localização na pasta de diagnóstico
    sysctl -a .../system/sysctl.log
    cat /proc/sys/fs/file-nr .../system/fs-file-nr.log
    ping -c 1 .../system/cluster-ping.log
    cp /etc/hosts .../system/hosts_entries.log
    cp /etc/resolv.conf .../system/resolv.conf
  • Arquivos de configuração:o Dataproc salva os seguintes arquivos de configuração nos locais a seguir na pasta de dados de diagnóstico do checkpoint no Cloud Storage.

    Item(ns) incluído(s) Localização na pasta de diagnóstico
    Propriedades do Dataproc .../configs/dataproc/dataproc.properties
    Todos os arquivos em
    /etc/google-dataproc/
    .../configs/dataproc/
    Todos os arquivos em
    /etc/hadoop/conf/
    .../configs/hadoop/
    Todos os arquivos em /etc/hive/conf/ .../configs/hive/
    Todos os arquivos em
    /etc/hive-hcatalog/conf/
    .../configs/hive-hcatalog/
    Todos os arquivos em /etc/knox/conf/ .../configs/knox/
    Todos os arquivos em /etc/pig/conf/ .../configs/pig/
    Todos os arquivos em
    /etc/presto/conf/
    .../configs/presto/
    Todos os arquivos em
    /etc/spark/conf/
    .../configs/spark/
    Todos os arquivos em /etc/tez/conf/ .../configs/tez/
    Todos os arquivos em
    /etc/zookeeper/conf/
    .../configs/zookeeper/

Compartilhar dados de diagnóstico de ponto de verificação com o suporte

É possível ativar o compartilhamento de dados de diagnóstico de pontos de verificação com o Google Cloud suporte das seguintes maneiras:

  • Ativar o compartilhamento ao criar o cluster: adicione a seguinte propriedade opcional do cluster ao criar um cluster:

    dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
    

    Essa propriedade compartilha automaticamente os dados de diagnóstico do ponto de verificação coletados com o suporte doGoogle Cloud para que você não precise compartilhar manualmente após a criação do cluster a cada vez.

  • Ativar o compartilhamento após a criação do cluster: é possível ativar o compartilhamento de dados de checkpoint com o suporte doGoogle Cloud após a criação do cluster. Para isso, conceda acesso de leitura aos dados de checkpoint à conta de serviço usada pelo suporte do Google Cloud , da seguinte maneira:

    • Se o acesso uniforme no nível do bucket estiver ativado no bucket temporário, adicione uma vinculação de política do IAM:

      gcloud storage buckets add-iam-policy-binding gs://TEMP_BUCKET \
          --member=serviceAccount:cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com \
          --role=roles/storage.objectViewer
      

    • Se o controle de acesso no nível do objeto estiver ativado no bucket temporário, execute o seguinte comando para compartilhar dados de diagnóstico de checkpoint:

      gcloud storage objects update \
          gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID \
          --add-acl-grant=entity=user-cloud-diagnose@cloud-dataproc.iam.gserviceaccount.com,role=READER --recursive
      

Desativar a coleta de dados de diagnóstico de checkpoint

Para desativar a coleta de dados de diagnóstico de checkpoint em um cluster, defina dataproc:diagnostic.capture.enabled=false ao criar o cluster.

Coleta de dados de diagnóstico de snapshot

É possível executar o seguinte comando gcloud dataproc clusters diagnose para coletar um snapshot de dados de diagnóstico de um cluster em execução. Os dados são gravados como um arquivo de arquivamento (tar) no bucket de preparo do Dataproc no Cloud Storage.

gcloud dataproc clusters diagnose CLUSTER_NAME \
    --region=REGION \
    --tarball-access=GOOGLE_DATAPROC_DIAGNOSE \
    --tarball-gcs-dir=TARBALL_DIR

Observações:

  • CLUSTER_NAME: o nome do cluster a ser diagnosticado.
  • REGION: a região do cluster, por exemplo, us-central1.
  • --tarball-access=GOOGLE_DATAPROC_DIAGNOSE Essa flag fornece acesso ao arquivo tar de diagnóstico para Google Cloud suporte. Forneça Google Cloud suporte com o caminho do Cloud Storage do arquivo tar de diagnóstico.

    Como alternativa ao envio do arquivo tar para o suporte, você pode fornecer o UUID do cluster, o ID da operação do comando de diagnóstico e o local do Cloud Storage do bucket de configuração do cluster.

    Se você escolher gravar o arquivo tar de diagnóstico em um diretório específico, forneça ao suporte Google Cloud o caminho completo do Cloud Storage do arquivo tar, que é impresso pelo comando de diagnóstico.

  • TARBALL_DIR: opcional. Use essa flag para especificar um diretório do Cloud Storage em que o arquivo tar de diagnóstico será gravado. Se essa flag for omitida, o arquivo tar de diagnóstico será gravado no bucket de teste do Dataproc.

  • Additional flags:

    • --start-time com --end-time: use as duas flags para especificar um período no formato %Y-%m-%dT%H:%M:%S.%fZ para a coleta de dados de diagnóstico. Ao especificar um período, também é possível coletar registros de escalonamento automático do Dataproc durante esse período. Por padrão, esses registros não são coletados nos dados do snapshot de diagnóstico.

    • Use uma ou ambas as flags a seguir para coletar registros específicos de driver de job, evento do Spark, aplicativo YARN e saída do Sparklens:

      • --job-ids: uma lista separada por vírgulas de IDs de jobs
      • --yarn-application-ids: uma lista separada por vírgulas de IDs de aplicativos YARN

        • A agregação de registros do YARN precisa estar ativada (yarn.log-aggregation-enable=true) para a coleta de registros de aplicativos do YARN.
        • Para jobs do MapReduce, somente os registros de aplicativos do YARN são coletados.

Opcional: execute o script de diagnóstico

O comando gcloud dataproc clusters diagnose pode falhar ou expirar se um cluster estiver em um estado de erro e não puder aceitar tarefas de diagnóstico do servidor do Dataproc. Como alternativa à execução do comando de diagnóstico, você pode usar o SSH para se conectar ao cluster e executar o script localmente no nó mestre.

gcloud compute ssh HOSTNAME
gcloud storage cp gs://dataproc-diagnostic-scripts/diagnostic-script.sh .
sudo bash diagnostic-script.sh

O arquivo tar de diagnóstico é salvo em um diretório local. A saída do comando lista o local do arquivo tar com instruções sobre como fazer upload dele para um bucket do Cloud Storage.

Dados de instantâneo de diagnóstico

Os dados de snapshot do cluster incluem um resumo de diagnóstico e várias seções de arquivo.

Resumo do diagnóstico:o arquivo compactado inclui summary.txt que está na raiz do arquivo. Ele oferece uma visão geral do status do cluster, incluindo YARN, HDFS, disco e status de rede, e inclui avisos para alertar sobre possíveis problemas.

Seções do arquivo:o arquivo inclui as seguintes informações que são gravadas nos seguintes locais de arquivo.

  • Informações sobre Daemons e serviços

    Comando executado Local no arquivo
    yarn node -list -all /system/yarn-nodes.log
    hdfs dfsadmin -report -live -decommissioning /system/hdfs-nodes.log
    hdfs dfs -du -h /system/hdfs-du.log
    service --status-all /system/service.log
    systemctl --type service /system/systemd-services.log
    curl "http://${HOSTNAME}:8088/jmx" /metrics/resource_manager_jmx
    curl "http://${HOSTNAME}:8088/ws/v1/cluster/apps" /metrics/yarn_app_info
    curl "http://${HOSTNAME}:8088/ws/v1/cluster/nodes" /metrics/yarn_node_info
    curl "http://${HOSTNAME}:9870/jmx" /metrics/namenode_jmx

  • Informações da JVM

    Comando executado Local no arquivo
    jstack -l "${DATAPROC_AGENTPID}" jstack/agent${DATAPROC_AGENT_PID}.jstack
    jstack -l "${PRESTOPID}" jstack/agent${PRESTO_PID}.jstack
    jstack -l "${JOB_DRIVERPID}" jstack/driver${JOB_DRIVER_PID}.jstack
    jinfo "${DATAPROC_AGENTPID}" jinfo/agent${DATAPROC_AGENT_PID}.jstack
    jinfo "${PRESTOPID}" jinfo/agent${PRESTO_PID}.jstack
    jinfo "${JOB_DRIVERPID}" jinfo/agent${JOB_DRIVER_PID}.jstack

  • Informações do sistema Linux

    Comando executado Local no arquivo
    df -h /system/df.log
    ps aux /system/ps.log
    free -m /system/free.log
    netstat -anp /system/netstat.log
    sysctl -a /system/sysctl.log
    uptime /system/uptime.log
    cat /proc/sys/fs/file-nr /system/fs-file-nr.log
    ping -c 1 /system/cluster-ping.log

  • Arquivos de registro

    Item incluído Local no arquivo
    Todos os registros em /var/log com os seguintes prefixos no nome do arquivo:
    cloud-sql-proxy
    dataproc
    druid
    gcdp
    google
    hadoop
    hdfs
    hive
    knox
    presto
    spark
    syslog
    yarn
    zookeeper
    Os arquivos são armazenados na pasta logs e mantêm os nomes originais deles.
    Registros de inicialização de node do Dataproc de cada node (principal e de trabalho) no cluster. Os arquivos são colocados na pasta de arquivamento node_startup, que contém subpastas separadas para cada máquina no cluster.
    Registros de gateway de componentes de journalctl -u google-dataproc-component-gateway /logs/google-dataproc-component-gateway.log

  • Arquivos de configuração

    Item(ns) incluído(s) Local no arquivo
    Metadados da VM /conf/dataproc/metadata
    Variáveis de ambiente em /etc/environment /conf/dataproc/environment
    Propriedades do Dataproc /conf/dataproc/dataproc.properties
    Todos os arquivos em /etc/google-dataproc/ /conf/dataproc/
    Todos os arquivos em /etc/hadoop/conf/ /conf/hadoop/
    Todos os arquivos em /etc/hive/conf/ /conf/hive/
    Todos os arquivos em /etc/hive-hcatalog/conf/ /conf/hive-hcatalog/
    Todos os arquivos em /etc/knox/conf/ /conf/knox/
    Todos os arquivos em /etc/pig/conf/ /conf/pig/
    Todos os arquivos em /etc/presto/conf/ /conf/presto/
    Todos os arquivos em /etc/spark/conf/ /conf/spark/
    Todos os arquivos em /etc/tez/conf/ /conf/tez/
    Todos os arquivos em /etc/zookeeper/conf/ /conf/zookeeper/

Compartilhar o arquivo compactado

Você pode compartilhar o arquivo com o suporte do Google Cloud ou com usuários para receber ajuda para resolver problemas de cluster ou de job.

Para compartilhar o arquivo compactado:

  • Copie o arquivo do Cloud Storage e compartilhe o arquivo baixado ou
  • Altere as permissões no arquivo para permitir que outros usuários ou projetos do Google Cloud acessem o arquivo.

    Exemplo: o comando a seguir concede permissões de leitura do arquivo aos proprietários do projeto test-project:

    gcloud storage objects update PATH_TO_ARCHIVE --add-acl-grant=entity=project-owners-test-project,role=READER