Recogida de datos de diagnóstico de clústeres de Dataproc

"Ver datos de diagnóstico de clústeres de Dataproc"

Puede recoger los siguientes datos de diagnóstico para ayudarle a solucionar problemas de clústeres y trabajos:

Recogida de datos de diagnóstico de puntos de control

Si se habilita durante la creación del clúster, Dataproc recoge datos de diagnóstico de puntos de control durante las operaciones de creación del clúster, actualización del clúster y tarea de Dataproc.

Ubicación de los datos de Checkpoint

Dataproc guarda los datos de diagnóstico de los puntos de control en el segmento temporal del clúster en Cloud Storage, en la siguiente carpeta (checkpoint diagnostic data folder):

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

El segmento temporal del clúster predeterminado tiene un periodo de conservación de TTL de 90 días. Los datos se eliminan al final del periodo de conservación. Puedes especificar tu propio contenedor temporal de clúster con un periodo de TTL diferente cuando crees un clúster.

Datos de diagnóstico de Checkpoint

  • Registros de detalles de los nodos del clúster: Dataproc ejecuta los siguientes comandos para recoger y escribir información de YARN y HDFS en las siguientes ubicaciones de la carpeta de datos de diagnóstico de puntos de control 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 que usan la API Jobs de Dataproc. Estos datos de trabajo se recogen de cada trabajo de MapReduce y Spark enviado.

    • MapReduce job.xml: archivo que contiene los ajustes de configuración de los trabajos y que se guarda en .../jobs/JOB_UUID/mapreduce/job.xml.
    • Registros de eventos de Spark: detalles de ejecución de la tarea útiles para depurar, guardados en .../jobs/JOB_UUID/spark/application-id.
  • Información del sistema Linux: Dataproc ejecuta los siguientes comandos para recoger y guardar información del sistema en las siguientes ubicaciones de la carpeta de datos de diagnóstico del punto de control 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 de puntos de control en Cloud Storage.

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

Habilitar y compartir datos de diagnóstico de puntos de control

Cuando crees un clúster, podrás habilitar y compartir datos de diagnóstico de puntos de control del clúster con el equipo de Google Cloud Asistencia:

Habilita la recogida de datos de puntos de control

Añade la dataproc:diagnostic.capture.enabled=true propiedad de clúster cuando crees un clúster de Dataproc para habilitar la recogida de datos de diagnóstico de puntos de control en el clúster.

Compartir datos de puntos de control

Si habilitas el acceso uniforme a nivel de contenedor en el contenedor temporal del clúster, todo el contenido del contenedor temporal, incluidos los datos de diagnóstico de puntos de control recogidos y los datos efímeros, como los archivos del historial de trabajos de MapReduce, los registros de YARN agregados y los registros de eventos de Spark, se compartirán con elGoogle Cloud equipo de Asistencia.

Si el control de acceso a nivel de objeto está habilitado en el segmento temporal del clúster, solo se comparten los datos de diagnóstico de puntos de control recogidos (datos de la carpeta de datos de diagnóstico de puntos de control de Cloud Storage).

Puedes habilitar la opción para compartir datos de diagnóstico de puntos de control con el Google Cloud equipo de Asistencia cuando crees un clúster o después de crearlo:

  • Habilitar el uso compartido al crear un clúster: añade la siguiente propiedad cuando crees un clúster:

    dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
    
  • Habilitar el uso compartido después de crear el clúster: puedes habilitar el uso compartido de datos de puntos de control con el Google Cloud equipo de Asistencia después de crear el clúster de las siguientes formas:

    • Proporciona acceso de lectura a los datos de puntos de control a la cuenta de servicio que usa el Google Cloud equipo de Asistencia.

      • Si el acceso uniforme a nivel de segmento está habilitado en el segmento temporal, añade un enlace de política de gestión de identidades y accesos:

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

      • Si el control de acceso a nivel de objeto está habilitado en el segmento temporal, ejecuta el siguiente comando para compartir los datos de diagnóstico de los puntos de control:

        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
        

Recogida de datos de diagnóstico de capturas

Puedes ejecutar el siguiente comando gcloud dataproc clusters diagnose para recoger 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 segmento de almacenamiento provisional de Dataproc en Cloud Storage.

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

Notas:

  • CLUSTER_NAME: el nombre del clúster que se va a diagnosticar.
  • REGION: 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 a Google Cloud asistencia. Proporciona asistencia a Google Cloud con la ruta de Cloud Storage del archivo tar de diagnóstico.

  • Additional flags:

    • --start-time con --end-time: usa ambas marcas para especificar un intervalo de tiempo en formato %Y-%m-%dT%H:%M:%S.%fZ para la recogida de datos de diagnóstico. Si especificas un intervalo de tiempo, también se recogerán los registros de autoescalado de Dataproc durante ese periodo (de forma predeterminada, los registros de autoescalado de Dataproc no se recogen en los datos de la instantánea de diagnóstico).

    • Puedes usar una o ambas de las siguientes marcas para recoger registros específicos de controladores de trabajos, eventos de Spark, aplicaciones de YARN y salida de Sparklens:

      • --job-ids: lista de IDs de trabajo separados por comas.
      • --yarn-application-ids: lista separada por comas de IDs de aplicaciones de YARN.

        • La agregación de registros de YARN debe estar habilitada (yarn.log-aggregation-enable=true) para recoger los registros de aplicaciones de YARN.
        • En el caso de las tareas de MapReduce, solo se recogen los registros de aplicaciones de YARN.

Opcional: Ejecuta la secuencia de comandos de diagnóstico

El comando gcloud dataproc clusters diagnose puede fallar o agotar el tiempo de espera si un clúster está en 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 clúster y, a continuación, ejecutar la secuencia de comandos de forma local en el nodo maestro.

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

El archivo tar del archivo de diagnóstico se guarda en un directorio local. El resultado del comando muestra la ubicación del archivo tar con instrucciones sobre cómo subirlo a un segmento de Cloud Storage.

Datos 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 que se encuentra en la raíz del archivo. Ofrece un resumen del estado del clúster, incluido el estado de YARN, HDFS, el disco y la red, y muestra advertencias para alertarte de posibles problemas.

Secciones del archivo: el archivo incluye la siguiente información, que se escribe en las ubicaciones de archivo que se indican a continuación.

  • Información sobre daemons y servicios

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

    Elemento incluido Ubicación en el archivo
    Todos los registros de /var/log con los siguientes prefijos en el 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 de archivo logs y conservan sus nombres originales.
    Registros de inicio de nodos de Dataproc de cada nodo (maestro y de trabajador) de tu clúster. Los archivos se colocan en la carpeta node_startup, que contiene subcarpetas independientes para cada máquina del clúster.
    Registros de la pasarela de componentes del journalctl -u google-dataproc-component-gateway /logs/google-dataproc-component-gateway.log

  • Archivos de configuración

    Artículos incluidos Ubicación en el 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 de /etc/google-dataproc/ /conf/dataproc/
    Todos los archivos de /etc/hadoop/conf/ /conf/hadoop/
    Todos los archivos de /etc/hive/conf/ /conf/hive/
    Todos los archivos de /etc/hive-hcatalog/conf/ /conf/hive-hcatalog/
    Todos los archivos de /etc/knox/conf/ /conf/knox/
    Todos los archivos de /etc/pig/conf/ /conf/pig/
    Todos los archivos de /etc/presto/conf/ /conf/presto/
    Todos los archivos de /etc/spark/conf/ /conf/spark/
    Todos los archivos de /etc/tez/conf/ /conf/tez/
    Todos los archivos de /etc/zookeeper/conf/ /conf/zookeeper/

Compartir el archivo

Puedes compartir el archivo con el equipo de Asistencia o con los usuarios para obtener ayuda a la hora de solucionar problemas con el clúster o los trabajos. Google Cloud

Para compartir el archivo:

  • Copia el archivo de la copia de seguridad de Cloud Storage y, a continuación, comparte el archivo descargado, o
  • Cambia los permisos del archivo para permitir que otros Google Cloud usuarios o proyectos accedan al archivo.

    Ejemplo: El siguiente comando otorga permisos de lectura al 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