Servidor de historial persistente de Dataproc

Descripción general

Después de borrar los clústeres de Dataproc, los usuarios a menudo desean ver los archivos del historial de trabajos para fines de diagnóstico o para otros fines. El servidor de historial persistente (PHS) de Dataproc proporciona una IU para ver el historial de trabajos de los trabajos ejecutados en clústeres de Dataproc activos o borrados.

El servidor de historial persistente se ejecuta en un clúster de Dataproc de nodo único, almacena y accede a los archivos del historial de trabajos en Cloud Storage y admite los trabajos MapReduce, Spark y Pig. Esta función está disponible en la versión 1.4-debian10 de Dataproc y las posteriores.

Configura un clúster de trabajo de Dataproc

Especifica la siguiente marca y propiedades del clúster cuando creas un clúster de Dataproc que ejecutará trabajos y almacenará registros de trabajos para que un clúster del servidor de historial persistente acceda y los muestre.

  • --enable-component-gateway: Marca obligatoria. Esta marca debe usarse para habilitar la puerta de enlace de componentes.
  • dataproc:job.history.to-gcs.enabled: Propiedad de clúster obligatoria. Esta propiedad debe establecerse en “true” para habilitar el almacenamiento de historial de trabajos en Cloud Storage.
  • spark:spark.history.fs.logDirectory y spark:spark.eventLog.dir: Propiedades opcionales de los clústeres. Estas marcas especifican la ubicación para escribir el historial de trabajos de Spark y los registros de eventos, respectivamente. Si se usa, ambas marcas deben configurarse y apuntar a los directorios dentro del mismo bucket.
    Propiedades de muestra:
    spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history,
    spark:spark.eventLog.dir=gs://bucket-name/directory-name/spark-job-history
    
  • mapred:mapreduce.jobhistory.intermediate-done-dir y mapred:mapreduce.jobhistory.done-dir: Propiedades opcionales del clúster. Estas marcas especifican la ubicación de Cloud Storage para escribir los archivos de historial de trabajos de MapReduce intermedios y finales, respectivamente. Si se usa, ambas marcas deben configurarse y apuntar a los directorios dentro del mismo bucket. La ubicación mapreduce.jobhistory.intermediate-done-dir intermedia es almacenamiento temporal. Los archivos intermedios se mueven a la ubicación mapreduce.jobhistory.done-dir cuando se completa el trabajo de MapReduce.
    Propiedades de muestra:
    mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory-name/mapreduce-job-history/done,
    mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done
    
  • Las siguientes propiedades controlan el comportamiento de limpieza de Cloud Storage para los registros de eventos de las imágenes 1.4 y posteriores. Nota: La configuración predeterminada de estas propiedades permite mostrar los trabajos en ejecución en la IU del servidor de historial de Spark para clústeres que usan Cloud Storage a fin de almacenar registros de eventos de Spark.
    spark:spark.history.fs.gs.outputstream.type(default:BASIC)
    spark:spark.history.fs.gs.outputstream.sync.min.interval.ms (default: 5000ms).
    
  1. Ejecuta el comando gcloud dataproc clusters create para crear un clúster de trabajo. El clúster debe crearse con la imagen 1.4-debian10 o una posterior. Nota: Para facilitar la lectura, los valores de la marca --property se muestran a continuación en líneas separadas. Cuando ejecutas el comando, todos los valores de la marca --property separados por comas deben especificarse en una línea.
    gcloud dataproc clusters create cluster-name \
        --region=region \
        --image-version=1.4-debian10 \
        --enable-component-gateway \
        --properties='dataproc:job.history.to-gcs.enabled=true,
    spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history,
    spark:spark.eventLog.dir=gs://bucket-name/directory/spark-job-history,
    mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory/mapreduce-job-history/done,
    mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done'
    

Puedes ejecutar el siguiente comando simplificado a fin de que Dataproc configure las ubicaciones de Cloud Storage para archivos de historial de trabajos.

gcloud dataproc clusters create cluster-name \
    --region=region \
    --image-version=1.4-debian10 \
    --enable-component-gateway \
    --properties='dataproc:job.history.to-gcs.enabled=true'

Si usas el comando simplificado que se muestra arriba, los archivos de historial de trabajos se guardarán en el bucket temporal de Dataproc en los directorios predeterminados: /spark-job-history, /mapreduce-job-history/done, y /mapreduce-job-history/intermediate-done. La ubicación del bucket temporal de Cloud Storage se muestra en el resultado del comando gcloud dataproc clusters describe cluster-name --region=region. La ubicación de Cloud Storage de los archivos del historial de trabajos también se muestra en los archivos /etc/spark/conf/spark-defaults.conf y /etc/hadoop/conf/mapred-site.xml del clúster.

Ejemplos después de establecer una conexión SSH al nodo de la instancia principal del clúster de trabajo:

cat /etc/spark/conf/spark-defaults.conf
...
spark.history.fs.logDirectory=gs://temp-bucket/spark-job-history
spark.eventLog.dir=gs://temp-bucket/spark-job-history
cat /etc/hadoop/conf/mapred-site.xml
...
<property>
  <name>mapreduce.jobhistory.done-dir</name>
  <value>gs://temp-bucket/mapreduce-job-history/done</value>
</property>
<property>
  <name>mapreduce.jobhistory.intermediate-done-dir</name>
  <value>gs://temp-bucket/mapreduce-job-history/done_intermediate</value>
</property>

Configura un servidor de historial persistente

Especifica la siguiente marca y propiedades del clúster cuando creas un clúster de nodo único de PHS:

  • --enable-component-gateway: Marca obligatoria. Esta marca debe usarse para habilitar la puerta de enlace de componentes.
  • spark:spark.history.fs.logDirectory: Propiedad de clúster obligatoria para habilitar el historial de trabajos de Spark persistentes. Esta propiedad especifica los directorios y bucket de Cloud Storage en los que la PHS accederá a los registros del historial de trabajos de Spark escritos por clústeres de trabajo (consulta Configura un clúster de trabajo de Dataproc). En lugar de especificar directorios de bucket específicos, usa asteriscos como comodines (por ejemplo, gs://bucket-name/*/spark-job-history) para permitir que el servidor PHS coincida con varios directorios en el bucket especificado que escriben los diferentes clústeres de trabajo (pero consulta Consideración de la eficiencia: Usa comodines de mitad de ruta de acceso).
  • mapred:mapreduce.jobhistory.read-only.dir-pattern: Propiedad de clúster obligatoria para habilitar el historial de trabajos persistentes de MapReduce. Esta propiedad especifica los directorios del bucket de Cloud Storage en los que la PHS accederá a los registros del historial de trabajos de MapReduce escritos por los clústeres de trabajo (consulta Configura clústeres de trabajos). En lugar de especificar directorios de bucket específicos, usa asteriscos como comodines (por ejemplo, gs://bucket-name/*/mapreduce-job-history/done) para permitir que el servidor PHS coincida con varios directorios en el bucket especificado que escriben los diferentes clústeres de trabajo (pero consulta Consideración de la eficiencia: Usa comodines de mitad de ruta de acceso).
  1. Ejecuta el comando gcloud dataproc clusters create para crear un clúster de un solo nodo PHS de Dataproc.
    gcloud dataproc clusters create cluster-name \
        --single-node \
        --region=region \
        --image-version=1.4-debian10 \
        --enable-component-gateway \
        --properties='spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history,mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done'
    

Ve a la página Detalles del clúster del clúster de nodo único de PHS en Cloud Console y, luego, haz clic en la pestaña INTERFACES WEB. En la puerta de enlace de componentes, haz clic en “MapReduce Job History” o “Spark History Server” para ver las IU del historial de trabajos de MapReduce y de Spark.

IU del servidor de historial de Spark

En la siguiente captura de pantalla, se muestra la IU del servidor de historial de Spark, que muestra los vínculos a los trabajos de Spark que se ejecutan en job-cluster-1 y job-cluster-2 después de configurar spark.history.fs.logDirectory y spark:spark.eventLog.dir de los clústeres de trabajo y las ubicaciones de spark.history.fs.logDirectory del clúster de PHS de la siguiente manera:

job-cluster-1 gs://example-cloud-storage-bucket/job-cluster-1/spark-job-history
job-cluster-2 gs://example-cloud-storage-bucket/job-cluster-2/spark-job-history
phs-cluster gs://example-cloud-storage-bucket/*/spark-job-history

Puedes ver una lista de trabajos por nombre de la app en la IU del servidor de historial de Spark si ingresas el nombre en el cuadro de búsqueda. El nombre de la app se puede configurar de una de las siguientes formas (enumeradas por prioridad):

  1. Configurar dentro del código de la aplicación cuando se crea el contexto de Spark
  2. Configurar por la propiedad spark.app.name cuando se envía el trabajo
  3. Configurar por Dataproc para el nombre completo del recurso de REST para el trabajo (projects/project-id/regions/region/jobs/job-id)

Registros de eventos

La IU del servidor de historial de Spark proporciona un botón Registro de eventos en el que puedes hacer clic para descargar los registros de eventos de Spark. Estos registros son útiles para examinar el ciclo de vida de la aplicación de Spark.

Trabajos de Spark

Las aplicaciones de Spark se dividen en varios trabajos, que se desglosan en varias etapas. Cada etapa puede tener varias tareas, que se ejecutan en nodos ejecutores (trabajadores).

  • Haz clic en el ID de la app de Spark en la IU para abrir la página Trabajos de Spark, que proporciona un cronograma de eventos y un resumen de los trabajos dentro de la aplicación.

  • Haz clic en un trabajo para abrir una página de detalles de trabajo con un grafo acíclico dirigido (DAG) y el resumen de las etapas del trabajo.

  • Haz clic en una etapa o usa la pestaña Etapas para seleccionar una etapa a fin de abrir la página Detalles de la etapa.

    Los detalles de la etapa incluyen una visualización de DAG, un cronograma de eventos y métricas para las tareas dentro de la etapa. Puedes usar esta página para solucionar problemas relacionados con tareas suprimidas, retrasos del programador y errores de memoria insuficiente. El visualizador de DAG muestra la línea de código a partir de la cual se deriva la etapa, lo que te ayuda a hacer un seguimiento de los problemas hasta el código.

  • Haz clic en la pestaña Ejecutores para obtener información sobre el controlador de la aplicación de Spark y los nodos ejecutores.

    La información importante de esta página incluye la cantidad de núcleos y la cantidad de tareas que se ejecutaron en cada ejecutor.