Registros de Dataproc

Los registros de tareas y clústeres de Dataproc se pueden ver, buscar, filtrar y archivar en Cloud Logging.

Niveles de registro de componentes

Define los niveles de registro de Spark, Hadoop, Flink y otros componentes de Dataproc con propiedades de clúster log4j específicas de cada componente, como hadoop-log4j, al crear un clúster. Los niveles de registro de componentes basados en clústeres se aplican a los daemons de servicio, como YARN ResourceManager, y a los trabajos que se ejecutan en el clúster.

Si no se admiten las propiedades de log4j en un componente, como el componente Presto, escribe una acción de inicialización que edite el archivo log4j.properties o log4j2.properties del componente.

Niveles de registro de componentes específicos de una tarea: también puedes definir niveles de registro de componentes cuando envías una tarea. Estos niveles de registro se aplican al trabajo y tienen prioridad sobre los niveles de registro definidos al crear el clúster. Consulta más información sobre las propiedades de clústeres y de trabajos.

Niveles de registro de la versión de los componentes Spark y Hive:

Los componentes Spark 3.3.X y Hive 3.X usan propiedades de log4j2, mientras que las versiones anteriores de estos componentes usan propiedades de log4j (consulta Apache Log4j2). Usa el prefijo spark-log4j: para definir los niveles de registro de Spark en un clúster.

  • Ejemplo: versión de imagen 2.0 de Dataproc con Spark 3.1 para definir log4j.logger.org.apache.spark:

    gcloud dataproc clusters create ... \
        --properties spark-log4j:log4j.logger.org.apache.spark=DEBUG
    
  • Por ejemplo, versión de imagen de Dataproc 2.1 con Spark 3.3 para definir logger.sparkRoot.level:

    gcloud dataproc clusters create ...\
        --properties spark-log4j:logger.sparkRoot.level=debug
    

Niveles de registro del controlador de tareas

Dataproc usa un nivel de registro predeterminado INFO para los programas de controladores de tareas. Puedes cambiar este ajuste para uno o varios paquetes con la marca gcloud dataproc jobs submit --driver-log-levels.

Ejemplo:

Define el DEBUGnivel de registro al enviar una tarea de Spark que lea archivos de Cloud Storage.

gcloud dataproc jobs submit spark ...\
    --driver-log-levels org.apache.spark=DEBUG,com.google.cloud.hadoop.gcsio=DEBUG

Ejemplo:

Define el nivel del registrador root como WARN y el nivel del registrador com.example como INFO.

gcloud dataproc jobs submit hadoop ...\
    --driver-log-levels root=WARN,com.example=INFO

Niveles de registro del ejecutor de Spark

Para configurar los niveles de registro de los ejecutores de Spark, sigue estos pasos:

  1. Prepara un archivo de configuración de log4j y, a continuación, súbelo a Cloud Storage.

    .

  2. Haz referencia al archivo de configuración cuando envíes el trabajo.

    Ejemplo:

    gcloud dataproc jobs submit spark ...\
        --file gs://my-bucket/path/spark-log4j.properties \
        --properties spark.executor.extraJavaOptions=-Dlog4j.configuration=file:spark-log4j.properties
    

Spark descarga el archivo de propiedades de Cloud Storage en el directorio de trabajo local del trabajo, al que se hace referencia como file:<name> en -Dlog4j.configuration.

Registros de tareas de Dataproc en Logging

Consulta Registros y resultados de las tareas de Dataproc para obtener información sobre cómo habilitar los registros de controladores de tareas de Dataproc en Logging.

Acceder a los registros de tareas en Logging

Accede a los registros de trabajos de Dataproc con el Explorador de registros, el comando gcloud logging o la API Logging.

Consola

Los registros de controladores de tareas de Dataproc y de contenedores de YARN se muestran en el recurso Tarea de Cloud Dataproc.

Ejemplo: registro del controlador de trabajos después de ejecutar una consulta del explorador de registros con las siguientes selecciones:

  • Recurso: Cloud Dataproc Job
  • Nombre del registro: dataproc.job.driver

Ejemplo: registro de contenedor de YARN después de ejecutar una consulta de Explorador de registros con las siguientes selecciones:

  • Recurso: Cloud Dataproc Job
  • Nombre del registro: dataproc.job.yarn.container

gcloud

Puedes leer las entradas de registro de un trabajo con el comando gcloud logging read. Los argumentos de los recursos deben ir entre comillas ("..."). El siguiente comando usa etiquetas de clúster para filtrar las entradas de registro devueltas.

gcloud logging read \
    "resource.type=cloud_dataproc_job \
    resource.labels.region=cluster-region \
    resource.labels.job_id=my-job-id"

Ejemplo de salida (parcial):

jsonPayload:
  class: org.apache.hadoop.hdfs.StateChange
  filename: hadoop-hdfs-namenode-test-dataproc-resize-cluster-20190410-38an-m-0.log
  ,,,
logName: projects/project-id/logs/hadoop-hdfs-namenode
---
jsonPayload:
  class: SecurityLogger.org.apache.hadoop.security.authorize.ServiceAuthorizationManager
  filename: cluster-name-dataproc-resize-cluster-20190410-38an-m-0.log
  ...
logName: projects/google.com:hadoop-cloud-dev/logs/hadoop-hdfs-namenode

API REST

Puede usar la API REST de Logging para enumerar las entradas de registro (consulte entries.list).

Registros de clústeres de Dataproc en Logging

Dataproc exporta los siguientes registros de clústeres de Apache Hadoop, Spark, Hive, Zookeeper y otros de Dataproc a Cloud Logging.

Tipo de registro Nombre del registro Descripción
Registros del daemon maestro hadoop-hdfs
hadoop-hdfs-namenode
hadoop-hdfs-secondary namenode
hadoop-hdfs-zkfc
hadoop-yarn-resourcemanager
hadoop-yarn-timelineserver
hive-metastore
hive-server2
mapred-mapred-historyserver
zookeeper
Nodo de registro
Nodo de nombres de HDFS
Nodo de nombres secundario de HDFS
Controlador de conmutación por error de ZooKeeper
Gestor de recursos de YARN
Servidor de cronología de YARN
Metastore de Hive
Servidor 2 de Hive
Servidor del historial de trabajos de MapReduce
Servidor de ZooKeeper
Registros de daemon de trabajador hadoop-hdfs-datanode
hadoop-yarn-nodemanager
Nodo de datos de HDFS
Gestor de nodos de YARN
Registros del sistema autoscaler
google.dataproc.agent
google.dataproc.startup
Registro del escalador automático de Dataproc
Registro del agente de Dataproc
Registro de la secuencia de comandos de inicio de Dataproc + registro de la acción de inicialización
Registros ampliados (adicionales) knox
gateway-audit
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
Todos los registros de los subdirectorios de /var/log/ que coincidan con:
knox (incluye gateway-audit.log)
zeppelin
ranger-usersync
jupyter_notebook
jupyter_kernel_gateway
spark-history-server
Registros del sistema de la máquina virtual syslog
Registros del sistema de los nodos maestros y de trabajador del clúster

Acceder a los registros de clústeres en Cloud Logging

Puedes acceder a los registros de clústeres de Dataproc con el Explorador de registros, el comando gcloud logging o la API Logging.

Consola

Seleccione las siguientes opciones de consulta para ver los registros del clúster en el Explorador de registros:

  • Recurso: Cloud Dataproc Cluster
  • Nombre del registro: log name

gcloud

Puedes leer las entradas de registro de un clúster con el comando gcloud logging read. Los argumentos de los recursos deben ir entre comillas ("..."). El siguiente comando usa etiquetas de clúster para filtrar las entradas de registro devueltas.

gcloud logging read <<'EOF'
    "resource.type=cloud_dataproc_cluster
    resource.labels.region=cluster-region
    resource.labels.cluster_name=cluster-name
    resource.labels.cluster_uuid=cluster-uuid"
EOF

Ejemplo de salida (parcial):

jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService
  filename: hadoop-yarn-resourcemanager-cluster-name-m.log
  ...
logName: projects/project-id/logs/hadoop-yarn-resourcemanager
---
jsonPayload:
  class: org.apache.hadoop.yarn.server.resourcemanager.ResourceTrackerService
  filename: hadoop-yarn-resourcemanager-component-gateway-cluster-m.log
  ...
logName: projects/project-id/logs/hadoop-yarn-resourcemanager

API REST

Puede usar la API REST de Logging para enumerar las entradas de registro (consulte entries.list).

Permisos

Para escribir registros en Logging, la cuenta de servicio de la VM de Dataproc debe tener el rol de gestión de identidades y accesos logging.logWriter. La cuenta de servicio predeterminada de Dataproc tiene este rol. Si usas una cuenta de servicio personalizada, debes asignar este rol a la cuenta de servicio.

Proteger los registros

De forma predeterminada, los registros de Logging se cifran en reposo. Puedes habilitar las claves de cifrado gestionadas por el cliente (CMEK) para cifrar los registros. Para obtener más información sobre la compatibilidad con CMEK, consulta Gestionar las claves que protegen los datos del enrutador de registros y Gestionar las claves que protegen los datos de almacenamiento de Logging.

Siguientes pasos