Diagnóstico de clusters do Dataproc

Consultar as informações de registro e configuração pode ser útil para solucionar problemas de cluster ou job. Há muitos arquivos de registro e configuração, e a coleta de cada um deles para investigação consome muito tempo. Para solucionar esse problema, os clusters do Dataproc são compatíveis com um comando diagnose especial por meio da CLI do Google Cloud. Esse comando coleta e arquiva registros importantes do sistema, Spark, Hadoop e Dataproc. Em seguida, envia o arquivo para o bucket do Cloud Storage anexado ao cluster.

Como usar o comando de diagnóstico da CLI do Google Cloud

É possível usar o comando diagnose da CLI do Google Cloud nos clusters do Dataproc. Consulte Dataproc e Google Cloud CLI.

Depois que a CLI gcloud estiver instalada e configurada, será possível executar o comando gcloud dataproc clusters diagnose no cluster, conforme mostrado abaixo. Substitua cluster-name pelo nome do cluster e region pela região do cluster, por exemplo, --region=us-central1.

gcloud dataproc clusters diagnose cluster-name \
    --region=region \
    ... other args ...

O comando gera o local do Cloud Storage do arquivo que contém os dados (consulte Itens incluídos na saída do comando de diagnóstico). Consulte Como compartilhar os dados coletados pelo diagnóstico para informações sobre como acessar e copiar o arquivo.

Como executar o script de diagnóstico no nó mestre (opcional)

O comando de diagnóstico da CLI do Google Cloud pode falhar ou expirar se um cluster estiver em estado de erro e não aceitar tarefas de diagnóstico do servidor do Dataproc. Para evitar esse problema, execute o SSH no nó mestre, faça o download do script de diagnóstico e execute o script localmente no nó mestre:

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

O tarball de diagnóstico será salvo em um diretório temporário local. Se você quiser, siga as instruções na resposta ao comando para fazer upload de um bucket do Cloud Storage e compartilhar com o Suporte do Google.

Compartilhamento dos dados coletados pelo comando de diagnóstico

É possível compartilhar o arquivo gerado pelo comando diagnose de duas maneiras:

  1. Faça download do arquivo do Cloud Storage e compartilhe-o.
  2. Altere as permissões no arquivo para autorizar outros usuários ou projetos do Google Cloud Platform a acessar o arquivo.

Por exemplo, o comando a seguir adiciona permissões de leitura ao arquivo de diagnóstico em um test-project:

gsutil -m acl ch -g test-project:R path-to-archive

Itens incluídos na saída do comando de diagnóstico

O comando diagnose inclui os seguintes arquivos de configuração, registros e saídas do cluster em um arquivo, O arquivo é colocado no bucket do Cloud Storage associado ao cluster do Dataproc, conforme discutido acima.

Resumo do diagnóstico

O script de diagnóstico analisa automaticamente os dados coletados e gera um summary.txt na raiz do tarball de diagnóstico. No resumo, você encontra uma visão geral sobre o status do cluster, incluindo YARN, HDFS, disco, rede etc., e avisos para alertar possíveis problemas.

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 do JVM

Comando executado Local no arquivo
jstack -l "${DATAPROC_AGENT_PID}" jstack/agent_${DATAPROC_AGENT_PID}.jstack
jstack -l "${PRESTO_PID}" jstack/agent_${PRESTO_PID}.jstack
jstack -l "${JOB_DRIVER_PID}" jstack/driver_${JOB_DRIVER_PID}.jstack
jinfo "${DATAPROC_AGENT_PID}" jinfo/agent_${DATAPROC_AGENT_PID}.jstack
jinfo "${PRESTO_PID}" jinfo/agent_${PRESTO_PID}.jstack
jinfo "${JOB_DRIVER_PID}" 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 registros

Item(ns) incluído(s) Local no arquivo
Todos os registros em /var/log com os seguintes prefixos no nome do arquivo:
cloud-sql-proxy
dataproc
druid
gcdp
gcs
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/