Diagnostica clústeres de Dataproc

Ver información sobre el registro y la configuración puede ser útil para solucionar problemas de un clúster o trabajo. Desafortunadamente, hay muchos archivos de registro y configuración, y recopilar cada uno para su investigación puede llevar mucho tiempo. Para solucionar este problema, los clústeres de Dataproc admiten un comando diagnose especial a través del SDK de Cloud. Este comando recopila y archiva registros importantes del sistema, Spark/Hadoop y Dataproc y, luego, sube el archivo al bucket de Cloud Storage adjunto a tu clúster.

Usa el comando de diagnóstico del SDK de Cloud

Puedes usar el comando diagnose del SDK de Cloud en tus clústeres de Dataproc (consulta Dataproc y SDK de Cloud).

Una vez instalado y configurado el SDK de Cloud, puedes ejecutar el comando gcloud dataproc clusters diagnose en tu clúster como se muestra a continuación. Reemplaza cluster-name por el nombre de tu clúster y region por la región de tu clúster, por ejemplo, --region=us-central1.

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

El comando genera el nombre y la ubicación del archivo que contiene tus datos.

...
Saving archive to cloud
Copying file:///tmp/tmp.FgWEq3f2DJ/diagnostic.tar ...
Uploading   ...23db9-762e-4593-8a5a-f4abd75527e6/diagnostic.tar ...
Diagnostic results saved in:
gs://bucket-name/.../cluster-uuid/.../job-id/diagnostic.tar
    ...
En este ejemplo, bucket-name es el bucket de Cloud Storage adjunto a tu clúster, cluster-uuid es el ID único (UUID) de tu clúster y job-id es el UUID que corresponde a la tarea del sistema que ejecuta el comando de diagnóstico.

Cuando creas un clúster de Dataproc, Dataproc crea un bucket de Cloud Storage y lo adjunta a tu clúster. El comando de diagnóstico genera el archivo de este bucket. Para determinar el nombre del bucket creado por Cloud Dataproc, usa el comando clusters describe del SDK de Cloud. El bucket asociado a tu clúster se muestra junto a configurationBucket.

gcloud dataproc clusters describe cluster-name \
    --region=region \
...
  clusterName: cluster-name
  clusterUuid: daa40b3f-5ff5-4e89-9bf1-bcbfec6e0eac
  configuration:
  configurationBucket: dataproc-edc9d85f-...-us
  ...

Ejecuta la secuencia de comandos de diagnóstico desde el nodo principal (opcional)

El comando de diagnóstico del SDK de Cloud puede fallar o agotar su tiempo de espera si un clúster se encuentra en un estado de error y no puede aceptar tareas de diagnóstico del servidor de Dataproc. Para evitar este problema, puedes establecer una conexión SSH al nodo principal, descargar la secuencia de comandos de diagnóstico y, luego, ejecutar la secuencia de comandos de forma local en el nodo principal:

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

El archivo comprimido de diagnóstico se guardará en un directorio temporal local. Si lo deseas, puedes seguir las instrucciones en el resultado del comando para subirlos a un bucket de Cloud Storage y compartirlos con la Atención al cliente de Google.

Cómo compartir los datos recopilados por el diagnóstico

.

Puedes compartir el archivo generado por el comando diagnose de dos maneras:

  1. Descarga el archivo desde Cloud Storage y, luego, compártelo.
  2. Cambia los permisos en el archivo para permitir que otros proyectos o usuarios de Google Cloud Platform tengan acceso al archivo.

Por ejemplo, con el siguiente comando, se agregan permisos de lectura al archivo de diagnóstico en un test-project:

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

Elementos incluidos en el resultado del comando de diagnóstico

El comando diagnose incluye los siguientes registros, resultados y archivos de configuración de tu clúster en un archivo. El archivo se coloca en el bucket de Cloud Storage asociado con tu clúster de Dataproc, como se explicó anteriormente.

Resumen de diagnóstico

La secuencia de comandos de diagnóstico analiza de forma automática los datos recopilados y genera un summary.txt en la raíz del archivo comprimido de diagnóstico. En el resumen, se proporciona una descripción general de alto nivel del estado de los clústeres, incluidos YARN, HDFS, disco, herramientas de redes, etc., y también incluye advertencias para alertarte sobre posibles problemas.

Información de daemons y servicios

Comando ejecutado Ubicación en archivo
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

Información de JVM

Comando ejecutado Ubicación en archivo
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

Información del sistema Linux

Comando ejecutado Ubicación en archivo
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

Archivos de registro

Elementos incluidos Ubicación en archivo
Todos los registros en /var/log con los siguientes prefijos en su nombre de archivo:
cloud-sql-proxy
dataproc
druid
gcdp
gcs
google
hadoop
hdfs
hive
knox
presto
spark
syslog
yarn
zookeeper
Los archivos se colocan en la carpeta logs y del archivo y conservan sus nombres de archivo originales.
Registros de inicio del nodo de Dataproc para cada nodo (principal y trabajador) en tu clúster. Los archivos se colocan en la carpeta de archivo node_startup, que contiene subcarpetas separadas para cada máquina en el clúster.
Registros de puerta de enlace de componentes de journalctl -u google-dataproc-component-gateway /logs/google-dataproc-component-gateway.log

Archivos de configuración

Elementos incluidos Ubicación en archivo
Metadatos de VM /conf/dataproc/metadata
Variables de entorno en /etc/environment /conf/dataproc/environment
Propiedades de Dataproc /conf/dataproc/dataproc.properties
Todos los archivos en /etc/google-dataproc/ /conf/dataproc/
Todos los archivos en /etc/hadoop/conf/ /conf/hadoop/
Todos los archivos en /etc/hive/conf/ /conf/hive/
Todos los archivos en /etc/hive-hcatalog/conf/ /conf/hive-hcatalog/
Todos los archivos en /etc/knox/conf/ /conf/knox/
Todos los archivos en /etc/pig/conf/ /conf/pig/
Todos los archivos en /etc/presto/conf/ /conf/presto/
Todos los archivos en /etc/spark/conf/ /conf/spark/
Todos los archivos en /etc/tez/conf/ /conf/tez/
Todos los archivos en /etc/zookeeper/conf/ /conf/zookeeper/