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 de otro tipo. El servidor de historial persistente (PHS) de Dataproc proporciona una IU para ver el historial de trabajos de los trabajos que se ejecutan 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 clusteres de trabajo

Especifica la siguiente marca y propiedades del clúster cuando creas un clúster de trabajos de Dataproc que almacenará los registros de trabajos a los que un clúster del servidor de historial persistente accederá y mostrará.

  • --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 se debe configurar como “true” para habilitar el almacenamiento del historial de trabajos en Cloud Storage.
  • spark:spark.history.fs.logDirectory y spark:spark.eventLog.dir Propiedades opcionales del clúster. Estas marcas especifican la ubicación para escribir el historial de trabajos de Spark y los registros de eventos, respectivamente. Si se usan, ambas marcas se deben configurar y deben apuntar a 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 de clúster opcionales. Estas marcas especifican la ubicación de Cloud Storage para escribir los archivos de historial de trabajos intermedios y finales de MapReduce, respectivamente. Si se usan, ambas marcas se deben configurar y deben apuntar a directorios dentro del mismo bucket. La ubicación intermedia de mapreduce.jobhistory.intermediate-done-dir es el 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
    
  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-openssl10 o una posterior. Nota: Para una mayor legibilidad, los valores de la marca --property se muestran a continuación en líneas separadas. cuando ejecutas el comando, todos los valores de 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 los 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 persistentes de Spark. Esta propiedad especifica el bucket y los directorios de Cloud Storage en los que la PHS accederá a los registros del historial de trabajos de Spark 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/*/spark-job-history) para permitir que el servidor PHS coincida con varios directorios en el bucket especificado escrito por 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 de depósitos 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 la sección sobre cómo configurar clústeres de trabajo). 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 específico escrito por otro clústeres de trabajo (pero consulta la 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'
    

Visualiza los archivos de historial de trabajos

  1. Ve a la página Detalles del clúster de nodo único del PHS en Cloud Console y, luego, haz clic en la pestaña “INTERFACES WEB”.

  2. Haz clic en “MapReduce Job History” o “Spark History Server” para ver las IU del historial de trabajos de MapReduce y de Spark.

    Ejemplo:

    En la siguiente captura de pantalla, se muestra la IU del servidor de historial de PHS 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 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