Puedes aprovechar las siguientes funciones de recopilación de datos de diagnóstico de Managed Service para Apache Spark para solucionar problemas de clústeres y trabajos:
- Datos de diagnóstico de puntos de control: De forma predeterminada, Managed Service para Apache Spark recopila datos de diagnóstico de puntos de control durante el ciclo de vida del clúster.
- Datos de diagnóstico de instantáneas: Puedes recopilar una instantánea única de los datos de diagnóstico del clúster cuando sea necesario.
Recopilación de datos de diagnóstico de Checkpoint
De forma predeterminada, Managed Service para Apache Spark recopila datos de diagnóstico de puntos de control durante la creación del clúster, la actualización del clúster y las operaciones de trabajo de Managed Service para Apache Spark.
Ubicación de los datos del punto de control
Managed Service para Apache Spark guarda los datos de diagnóstico de puntos de control
en el bucket 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 bucket temporal predeterminado del clúster 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. Puedes especificar tu propio bucket temporal del clúster con un período de TTL diferente cuando creas un clúster.
Datos de diagnóstico de puntos de control
Registros de detalles de los nodos del clúster: Managed Service para Apache Spark 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 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.loghdfs dfsadmin -report -live -decommissioning.../nodes/timestamp/hdfs-nodes.logcp gs://STAGING_BUCKET/google-cloud-dataproc-metainfo/CLUSTER_UUID/nodes_exclude.xml.../nodes/timestamp/nodes_exclude.xmlDetalles del trabajo: Managed Service para Apache Spark 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 Managed Service para Apache Spark. Estos datos de trabajo se recopilan para cada trabajo de MapReduce y Spark enviado.
job.xmlde MapReduce: Es un archivo que contiene los parámetros de configuración del trabajo, guardado en.../jobs/JOB_UUID/mapreduce/job.xml.- Registros de eventos de Spark: Detalles de la ejecución del trabajo útiles para la depuración,
guardados en
.../jobs/JOB_UUID/spark/application-id.
Información del sistema Linux: Managed Service para Apache Spark ejecuta los siguientes comandos para recopilar y guardar información del sistema en las siguientes ubicaciones en la carpeta de datos de diagnóstico de puntos de control en Cloud Storage.
Comando Ubicación en la carpeta de diagnóstico sysctl -a.../system/sysctl.logcat /proc/sys/fs/file-nr.../system/fs-file-nr.logping -c 1.../system/cluster-ping.logcp /etc/hosts.../system/hosts_entries.logcp /etc/resolv.conf.../system/resolv.confArchivos de configuración: Managed Service para Apache Spark guarda los siguientes archivos de configuración en las siguientes ubicaciones en 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 Managed Service para Apache Spark .../configs/dataproc/dataproc.propertiesTodos los archivos de
/etc/google-dataproc/.../configs/dataproc/Todos los archivos de
/etc/hadoop/conf/.../configs/hadoop/Todos los archivos en /etc/hive/conf/.../configs/hive/Todos los archivos de
/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 de
/etc/presto/conf/.../configs/presto/Todos los archivos de
/etc/spark/conf/.../configs/spark/Todos los archivos en /etc/tez/conf/.../configs/tez/Todos los archivos de
/etc/zookeeper/conf/.../configs/zookeeper/
Comparte datos de diagnóstico de puntos de control con el equipo de asistencia
Puedes habilitar el uso compartido de datos de diagnóstico de puntos de control con la Google Cloud asistencia de las siguientes maneras:
Habilita el uso compartido durante la creación del clúster: Agrega la siguiente propiedad opcional del clúster cuando crees un clúster:
dataproc:diagnostic.capture.access=GOOGLE_DATAPROC_DIAGNOSE
Esta propiedad comparte automáticamente los datos de diagnóstico de puntos de control recopilados con la asistencia deGoogle Cloud para que no tengas que compartirlos de forma manual después de cada creación de clúster.
Habilita el uso compartido después de crear el clúster: Puedes habilitar el uso compartido de los datos de puntos de control con la asistencia deGoogle Cloud después de crear el clúster. Para ello, proporciona acceso de lectura a los datos de puntos de control a la cuenta de servicio que usa la asistencia de Google Cloud , de la siguiente manera:
Si el acceso uniforme a nivel de bucket está habilitado en el bucket temporal, agrega la vinculación de la política de IAM:
gcloud storage buckets add-iam-policy-binding gs://TEMP_BUCKET \ --member=serviceAccount:cloud-diagnose@cloud-dataproc. \ --role=roles/storage.objectViewer
Si el control de acceso a nivel de objeto está habilitado en el bucket temporal, ejecuta el siguiente comando para compartir los datos de diagnóstico del punto de control:
gcloud storage objects update \ gs://TEMP_BUCKET/google-cloud-dataproc-diagnostic/CLUSTER_UUID \ --add-acl-grant=entity=user-cloud-diagnose@cloud-dataproc.,role=READER --recursive
Inhabilita la recopilación de datos de diagnóstico de puntos de control
Para inhabilitar la recopilación de datos de diagnóstico de puntos de control en un clúster, configura
dataproc:diagnostic.capture.enabled=false
cuando crees el clúster.
Recopilación de datos de diagnóstico 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 de almacenamiento (tar) en el bucket de etapa de pruebas de Managed Service para Apache Spark en Cloud Storage.
gcloud dataproc clusters diagnose CLUSTER_NAME \ --region=REGION \ --tarball-access=GOOGLE_DATAPROC_DIAGNOSE \ --tarball-gcs-dir=TARBALL_DIR
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_DIAGNOSEEsta marca proporciona acceso al archivo tar de diagnóstico para Google Cloud asistencia. Proporciona Google Cloud al equipo de asistencia la ruta de acceso de Cloud Storage del archivo tar de diagnóstico.Como alternativa a proporcionar el archivo tar al equipo de asistencia, puedes proporcionar el UUID del clúster, el ID de operación del comando de diagnóstico y la ubicación de Cloud Storage del bucket de configuración del clúster.
Si eliges escribir el archivo tar de diagnóstico en un directorio específico, proporciona al equipo de asistencia de Google Cloud la ruta de acceso completa de Cloud Storage del archivo tar que imprime el comando diagnose.
Acceso al bucket y alcance del contenido compartido: El parámetro de configuración de acceso en el bucket de Cloud Storage que contiene el archivo tar de diagnóstico determina el alcance del contenido compartido con la asistencia de Google Cloud :
Acceso uniforme a nivel de bucket: Si el acceso uniforme a nivel de bucket está habilitado en el bucket de etapa de pruebas de Managed Service para Apache Spark o, si se especifica un TARBALL_DIR, en el bucket que contiene el TARBALL_DIR, todo el contenido del bucket se comparte con la asistencia de Google Cloud .
Acceso a nivel de objeto: Si el acceso a nivel de objeto está habilitado en el bucket de etapa de pruebas de Managed Service para Apache Spark o, si se especifica un TARBALL_DIR, en el bucket que contiene el TARBALL_DIR, solo se comparte el archivo tar de diagnóstico con la asistencia de Google Cloud .
TARBALL_DIR: Opcional Puedes usar esta marca para especificar un directorio de Cloud Storage en el que se escribirá el archivo tar de diagnóstico. Si se omite esta marca, el archivo tar de diagnóstico se escribirá en el bucket de etapa de pruebas de Managed Service para Apache Spark.
Additional flags:
--start-timecon--end-time: Usa ambas marcas para especificar un período en formato%Y-%m-%dT%H:%M:%S.%fZpara la recopilación de datos de diagnóstico. Especificar un período también habilita la recopilación de registros de escalado automático de Managed Service para Apache Spark durante ese período (de forma predeterminada, los registros de escalado automático de Managed Service para Apache Spark no se recopilan en los datos de la instantánea de diagnóstico).Puedes usar cualquiera de las siguientes marcas para recopilar registros de salida específicos del controlador de trabajos, del evento de Spark, de la aplicación de YARN y de Sparklens:
--job-ids: Es una lista separada por comas de IDs de trabajos.--yarn-application-ids: Es una lista separada por comas de los IDs de aplicación 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.
- La agregación de registros de YARN debe estar habilitada (
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 un estado de error y no puede aceptar tareas de diagnóstico del
servidor de Managed Service para Apache Spark. Como alternativa a la ejecución del comando diagnose, puedes
usar SSH para conectarte al clúster
y, luego, ejecutar la secuencia de comandos de forma local en el nodo principal.
gcloud compute ssh HOSTNAMEgcloud 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 de almacenamiento incluye summary.txt que se encuentra
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 las redes, y contiene 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 sobre daemons y servicios
Comando ejecutado Ubicación en archivo yarn node -list -all/system/yarn-nodes.loghdfs dfsadmin -report -live -decommissioning/system/hdfs-nodes.loghdfs dfs -du -h/system/hdfs-du.logservice --status-all/system/service.logsystemctl --type service/system/systemd-services.logcurl "http://${HOSTNAME}:8088/jmx"/metrics/resource_manager_jmxcurl "http://${HOSTNAME}:8088/ws/v1/cluster/apps"/metrics/yarn_app_infocurl "http://${HOSTNAME}:8088/ws/v1/cluster/nodes"/metrics/yarn_node_infocurl "http://${HOSTNAME}:9870/jmx"/metrics/namenode_jmxInformación de la JVM
Comando ejecutado Ubicación en archivo jstack -l "${DATAPROC_AGENTPID}"jstack/agent${DATAPROC_AGENT_PID}.jstackjstack -l "${PRESTOPID}"jstack/agent${PRESTO_PID}.jstackjstack -l "${JOB_DRIVERPID}"jstack/driver${JOB_DRIVER_PID}.jstackjinfo "${DATAPROC_AGENTPID}"jinfo/agent${DATAPROC_AGENT_PID}.jstackjinfo "${PRESTOPID}"jinfo/agent${PRESTO_PID}.jstackjinfo "${JOB_DRIVERPID}"jinfo/agent${JOB_DRIVER_PID}.jstackInformación del sistema Linux
Comando ejecutado Ubicación en archivo df -h/system/df.logps aux/system/ps.logfree -m/system/free.lognetstat -anp/system/netstat.logsysctl -a/system/sysctl.loguptime/system/uptime.logcat /proc/sys/fs/file-nr/system/fs-file-nr.logping -c 1/system/cluster-ping.logElemento incluido Ubicación en archivo Todos los registros de /var/logcon los siguientes prefijos en su nombre de archivo:
cloud-sql-proxy
dataproc
druid
gcdp
google
hadoop
hdfs
hive
knox
presto
spark
syslog
yarn
zookeeperLos archivos se colocan en la carpeta logsy del archivo y conservan sus nombres de archivo originales.Registros de inicio de nodos de Managed Service para Apache Spark para cada nodo (principal y trabajador) de tu clúster. Los archivos se colocan en la carpeta de archivo node_startup, que contiene subcarpetas independientes para cada máquina del clúster.Registros de puerta de enlace de componentes de journalctl -u google-dataproc-component-gateway/logs/google-dataproc-component-gateway.logArchivos de configuración
Elementos incluidos Ubicación en archivo Metadatos de VM /conf/dataproc/metadataVariables de entorno en /etc/environment/conf/dataproc/environmentPropiedades de Managed Service para Apache Spark /conf/dataproc/dataproc.propertiesTodos 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 para solucionar problemas del clúster o del trabajo.
Para compartir el archivo, sigue estos pasos:
- Copia el archivo desde Cloud Storage y, luego, comparte el archivo descargado, o bien
Cambia los permisos del archivo para permitir que otros usuarios o proyectos de Google Cloud 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