Cómo ver los datos de diagnóstico del clúster de Dataproc

"Ver datos de diagnóstico del clúster de Dataproc"

Dataproc recopila los siguientes datos de diagnóstico del clúster para ayudarte a solucionar problemas relacionados con el clúster y los trabajos:

Datos del punto de control

Cuando se habilita la función de datos de puntos de control, Dataproc recopila datos de diagnóstico durante las operaciones de creación de clústeres, actualización de clústeres y la API de Jobs de Dataproc. Dataproc guarda los datos en el clúster temp bucket en Cloud Storage, que tiene un período de retención de TTL de 90 días. Los datos se borran al final del período de retención.

Habilita las propiedades de recopilación de datos: Puedes incluir las siguientes propiedades opcionales del clúster cuando creas un clúster. Solo afectan la recopilación de datos de diagnóstico de puntos de control en el clúster creado.

  • Habilita la recopilación de datos: Establecer la propiedad dataproc:diagnostic.capture.enabled=true permite la recopilación de datos de diagnóstico de puntos de control en el clúster.
  • Compartir datos de diagnóstico: Si se configura la propiedad dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE, se comparten los datos de diagnóstico de los puntos de control recopilados con el Google Cloud equipo de asistencia.
    • Después de crear el clúster, puedes compartir los datos de diagnóstico con el equipo de asistencia al cliente de Google Cloud . Para ello, otorga acceso de lectura a los datos a la cuenta de servicio que usa el equipo de asistencia al cliente de Google Cloud , de la siguiente manera: Google Cloud
      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 \
      

Datos de diagnóstico

Los datos de diagnóstico constan de los siguientes datos escritos en gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID/ en Cloud Storage. En esta sección, esta ubicación se denomina carpeta de datos de diagnóstico.

  • Registros de detalles del nodo del clúster: Dataproc ejecuta los siguientes comandos para recopilar y escribir información de YARN y HDFS en las siguientes ubicaciones de la carpeta de datos de diagnóstico en Cloud Storage.

    Comando ejecutado Ubicación en la carpeta de diagnóstico
    yarn node -list -all .../nodes/timestamp/yarn-nodes.log
    hdfs dfsadmin -report -live -decommissioning .../nodes/timestamp/hdfs-nodes.log

  • Detalles del trabajo: Dataproc guarda la información de los trabajos de MapReduce y los registros de los trabajos de Spark para los trabajos que usan la API de Dataproc Jobs. Estos datos de trabajo se recopilan para cada trabajo de MR y Spark que se envía.

    • MapReduce job.xml: Es un archivo que contiene la configuración del trabajo y que se guarda en .../jobs/JOB_UUID/mapreduce/job.xml.
    • Registros de eventos de Spark: Detalles de la ejecución de trabajos útiles para la depuración, guardados en .../jobs/JOB_UUID/spark/application-id.
  • Información del sistema Linux: Dataproc ejecuta los siguientes comandos para recopilar y guardar información del sistema en las siguientes ubicaciones de la carpeta de datos de diagnóstico en Cloud Storage.

    Comando Ubicación en la carpeta 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
  • Archivos de configuración: Dataproc guarda los siguientes archivos de configuración en las siguientes ubicaciones de la carpeta de datos de diagnóstico en Cloud Storage.

    Elementos incluidos Ubicación en la carpeta de diagnóstico
    Propiedades de Dataproc .../configs/dataproc/dataproc.properties
    Todos los archivos en
    `/etc/google-dataproc/`
    .../configs/dataproc/
    Todos los archivos en
    `/etc/hadoop/conf/`
    .../configs/hadoop/
    Todos los archivos en `/etc/hive/conf/` .../configs/hive/
    Todos los archivos en
    `/etc/hive-hcatalog/conf/`
    .../configs/hive-hcatalog/
    Todos los archivos en `/etc/knox/conf/` .../configs/knox/
    Todos los archivos en `/etc/pig/conf/` .../configs/pig/
    Todos los archivos en
    "/etc/presto/conf/"
    .../configs/presto/
    Todos los archivos en
    `/etc/spark/conf/`
    .../configs/spark/
    Todos los archivos en `/etc/tez/conf/` .../configs/tez/
    Todos los archivos en
    `/etc/zookeeper/conf/`
    .../configs/zookeeper/

Datos de instantáneas

Puedes ejecutar el siguiente comando gcloud dataproc clusters diagnose para recopilar una instantánea de los datos de diagnóstico de un clúster en ejecución. Los datos se escriben como un archivo (tar) en el bucket de etapa de pruebas de Dataproc en Cloud Storage.

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

Notas:

  • CLUSTER_NAME: Es el nombre del clúster que se diagnosticará.
  • REGION: Es la región del clúster, por ejemplo, us-central1.
  • --tarball-access=GOOGLE_DATAPROC_DIAGNOSE Esta marca proporciona acceso al archivo tar de diagnóstico para el Google Cloud support. Proporciona Google Cloud soporte técnico con la ruta de acceso de Cloud Storage del archivo tar de diagnóstico.

  • Additional flags:

    • --start-time con --end-time: Usa ambas marcas para especificar un período en formato %Y-%m-%dT%H:%M:%S.%fZ para la recopilación de datos de diagnóstico. Especificar un período también permite la recopilación de registros del ajuste de escala automático de Dataproc durante ese período (de forma predeterminada, los registros del ajuste de escala automático de Dataproc no se recopilan en los datos de la instantánea de diagnóstico).

    • Puedes usar cualquiera de las siguientes marcas para recopilar registros específicos del controlador de trabajos, eventos de Spark, aplicaciones de YARN y resultados de Sparklens:

      • --job-ids: Lista de IDs de trabajos separados por comas
      • --yarn-application-ids: Es una lista separada por comas de los IDs de aplicaciones de YARN.

        • La agregación de registros de YARN debe estar habilitada (yarn.log-aggregation-enable=true) para la recopilación de registros de aplicaciones de YARN.
        • En el caso de los trabajos de MapReduce, solo se recopilan los registros de la aplicación de YARN.

Si es necesario, ejecuta la secuencia de comandos de diagnóstico

El comando gcloud dataproc clusters diagnose 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. Como alternativa a la ejecución del comando diagnose, puedes usar SSH para conectarte al nodo principal del clúster, descargar la secuencia de comandos de diagnóstico y, luego, ejecutarla de forma local en el nodo principal.

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

El archivo tar de diagnóstico se guarda en un directorio local. El resultado del comando enumera la ubicación del archivo tar con instrucciones para subirlo a un bucket de Cloud Storage.

Datos de instantáneas de diagnóstico

Los datos de la instantánea del clúster incluyen un resumen de diagnóstico y varias secciones de archivo.

Resumen de diagnóstico: El archivo incluye summary.txt en la raíz del archivo. Proporciona una descripción general del estado del clúster, incluido el estado de YARN, HDFS, el disco y la red, y también incluye advertencias para alertarte sobre posibles problemas.

Secciones del archivo: El archivo incluye la siguiente información, que se escribe en las siguientes ubicaciones del archivo.

  • 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_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

  • 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

    Artículo incluido 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
    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/

Comparte el archivo

Puedes compartir el archivo con el equipo de asistencia de Google Cloud o con los usuarios para obtener ayuda y solucionar problemas relacionados con el clúster o el trabajo.

Para compartir el archivo:

  • Copia el archivo de Cloud Storage y, luego, comparte el archivo descargado.
  • Cambia los permisos en el archivo para permitir que otros Google Cloud usuarios o proyectos accedan al archivo.

    Ejemplo: El siguiente comando otorga permisos de lectura del archivo a los propietarios del proyecto test-project:

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