Servidor de historial persistente de Dataproc

Descripción general

El servicio de Dataproc El Servidor de historial persistente (PHS) proporciona interfaces web para visualizar el historial de trabajos para los trabajos que se ejecutan en clústeres de Dataproc activos o borrados. Integra está disponible en La versión 1.5 de la imagen de Dataproc y versiones posteriores, y se ejecuta en un clúster de Dataproc de un solo nodo. Proporciona interfaces web a los siguientes archivos y datos:

  • Archivos de historial de trabajos de MapReduce y Spark

  • Vincular los archivos de historial de trabajos (consulte Componente de Flink opcional de Dataproc para crear un clúster de Dataproc y ejecutar trabajos de Flink)

  • Archivos de datos de Rutas de la aplicación creados por Servicio de cronograma de YARN v2 y almacenado en una instancia de Bigtable.

  • Registros de agregación de YARN

El servidor de historial persistente accede y muestra el historial de trabajos de Spark y MapReduce archivos de historial de trabajos de Flink y archivos de registro YARN escritos en Cloud Storage. durante la vida útil de los clústeres de trabajos de Dataproc.

Limitaciones

  • Un clúster de PHS de Dataproc te permite ver los archivos de historial de trabajos de trabajos de Dataproc que se ejecutaron en el proyecto en el que el clúster de PHS el código fuente. Además, la versión de imagen del clúster de PHS y el debe coincidir con la versión de la imagen de los clústeres de trabajo. Por ejemplo, puedes usar Dataproc Clúster de PHS con versión de imagen 2.0 para ver los archivos de historial de trabajos de los trabajos que se ejecutaron en los clústeres de trabajos de la versión de imagen de Dataproc 2.0 en el proyecto en el que se encuentra el clúster de PHS.

  • Un clúster de PHS no es compatible Kerberos y Autenticación Personal.

Crea un clúster de PHS de Dataproc

Puedes ejecutar lo siguiente: gcloud dataproc clusters create en una terminal local o en Cloud Shell con las siguientes marcas propiedades del clúster para crear un clúster de nodo único del servidor de historial persistente de Dataproc.

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT \
    --region=REGION \
    --single-node \
    --enable-component-gateway \
    --optional-components=COMPONENT \
    --properties=PROPERTIES
  • CLUSTER_NAME: especifica el nombre del clúster de PHS.
  • PROJECT: Especifica el proyecto que se asociará con el clúster de PHS. Esta El proyecto debe ser el mismo que el proyecto asociado al clúster. que ejecute tus trabajos (consulta Crea un clúster de trabajo de Dataproc).
  • REGION: Especifica una región de Compute Engine en la que se ubicará el clúster de PHS.
  • --single-node: Un clúster de PHS es un clúster de Dataproc clúster de nodo único.
  • --enable-component-gateway: Esta marca habilita Puerta de enlace del componente interfaces web en el clúster PHS.
  • COMPONENT: Usa esta marca para instalar una o más. componentes opcionales en el clúster. Debes especificar el componente opcional FLINK para ejecutar la Servicio web de HistoryServer de Flink en el clúster de PHS para ver Vincular los archivos de historial de trabajos.
  • PROPERTIES Especifica uno o más propiedades del clúster.
  • Si lo deseas, puedes agregar --image-version marca para especificar la versión de la imagen del clúster de PHS. La versión de la imagen del PHS debe coincidir con la versión de la imagen de los clústeres de trabajo de Dataproc. Consulta Limitaciones.

    Notas:

    • En los ejemplos de valores de propiedad de esta sección, se usa un "*" para permitir que la PHS hacer coincidir varios directorios del bucket especificado en los que escriben diferentes clústeres de trabajos (pero consulta Consideraciones sobre la eficiencia de comodines).
    • Las marcas --properties independientes se muestran en los siguientes ejemplos para para facilitar la lectura. La práctica recomendada cuando usas gcloud dataproc clusters create para crear un Dataproc en Compute Engine clúster es usar una marca --properties para especificar una lista de propiedades separadas por comas (consulta formato de propiedades del clúster).

    Propiedades:

    • yarn:yarn.nodemanager.remote-app-log-dir=gs://bucket-name/*/yarn-logs Agrega esta propiedad para especificar la ubicación de Cloud Storage donde la PHS accederán a los registros YARN escritos por clústeres de trabajos.
    • spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history Agrega esta propiedad para habilitar el historial de trabajos de Spark persistente. Esta propiedad especifica la ubicación donde el PHS accederá a los registros del historial de trabajos de Spark que escriben los clústeres de trabajos.

      En los clústeres de Dataproc 2.0+, las siguientes dos propiedades también debe configurarse para habilitar los registros del historial de Spark de PHS (consulta Opciones de configuración del servidor del historial de Spark). El valor spark.history.custom.executor.log.url es un valor literal que contiene {{PLACEHOLDERS}} para las variables que establecerá el servidor de historial persistente. Estos las variables no las establecen los usuarios; pasa el valor de la propiedad como se muestra.

      --properties=spark:spark.history.custom.executor.log.url.applyIncompleteApplication=false
      
      --properties=spark:spark.history.custom.executor.log.url={{YARN_LOG_SERVER_URL}}/{{NM_HOST}}:{{NM_PORT}}/{{CONTAINER_ID}}/{{CONTAINER_ID}}/{{USER}}/{{FILE_NAME}}
      

    • mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done Agrega esta propiedad para habilitar el historial de trabajos de MapReduce persistente. Esta propiedad especifica la ubicación de Cloud Storage donde la PHS accederán a los registros del historial de trabajos de MapReduce que escriben los clústeres de trabajos.

    • dataproc:yarn.atsv2.bigtable.instance=projects/project-id/instance_id/bigtable-instance-id: Después de Configurar el servicio de cronograma de Yarn v2, agrega esta propiedad para usar el clúster de PHS y ver los datos del cronograma Servicio de cronograma de aplicaciones de YARN V2 y a las interfaces web de Tez (consulta Interfaces web de puerta de enlace de componentes).

    • flink:historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs Usa esta propiedad para configurar el HistoryServer de Flink y supervisar un una lista de directorios separados por comas.

    Ejemplos de propiedades:

    --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/*/spark-job-history
    
    --properties=mapred:mapreduce.jobhistory.read-only.dir-pattern=gs://bucket-name/*/mapreduce-job-history/done
    
    --properties=flink:flink.historyserver.archive.fs.dir=gs://bucket-name/*/flink-job-history/completed-jobs
    

Crea un clúster de trabajo de Dataproc

Puedes ejecutar el siguiente comando en una terminal local o en Cloud Shell para crear una Clúster de trabajo de Dataproc que ejecuta trabajos y escribe archivos de historial de trabajos en un servidor de historial persistente (PHS).

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT \
    --region=REGION \
    --optional-components=COMPONENT \
    --enable-component-gateway \
    --properties=PROPERTIES \
    other args ...
  • CLUSTER_NAME: especifica el nombre del clúster de trabajo.
  • PROJECT: Especifica el proyecto asociado con el clúster de trabajo.
  • REGION: Especifica la región de Compute Engine en la que se ubicará el clúster del trabajo.
  • --enable-component-gateway: Esta marca habilita Puerta de enlace del componente interfaces web en el clúster de trabajo.
  • COMPONENT: Usa esta marca para instalar una o más. componentes opcionales en el clúster. Especifica el componente opcional FLINK para ejecutar trabajos de Flink en el clúster.
  • PROPERTIES: Agrega uno o más de los siguientes propiedades del clúster para establecer ubicaciones de Cloud Storage no predeterminadas relacionadas con PHS y otras propiedades del clúster de trabajos.

    Notas:

    • En los ejemplos de valores de propiedad de esta sección, se usa un "*" para permitir que la PHS hacer coincidir varios directorios del bucket especificado en los que escriben diferentes clústeres de trabajos (pero consulta Consideraciones sobre la eficiencia de comodines).
    • Las marcas --properties independientes se muestran en los siguientes ejemplos para para facilitar la lectura. La práctica recomendada cuando usas gcloud dataproc clusters create para crear un Dataproc en Compute Engine clúster es usar una marca --properties para especificar una lista de propiedades separadas por comas (consulta formato de propiedades del clúster).

    Propiedades:

    • yarn:yarn.nodemanager.remote-app-log-dir De forma predeterminada, los registros de YARN agregados están habilitados en el trabajo de Dataproc. clústeres y se escriben en el clúster temp bucket. Agrega esta propiedad para especificar una ubicación diferente de Cloud Storage en la que el clúster escribirá registros de agregación para que acceda el servidor de historial persistente.
      --properties=yarn:yarn.nodemanager.remote-app-log-dir=gs://bucket-name/directory-name/yarn-logs
      
    • spark:spark.history.fs.logDirectory y spark:spark.eventLog.dir: De forma predeterminada, los archivos de historial de trabajos de Spark se guardan en el clúster. temp bucket en el directorio /spark-job-history. Puedes agregar estas propiedades para especificar ubicaciones diferentes de Cloud Storage para estos archivos. Si ambos del bucket, deben apuntar a directorios en el mismo bucket.
      --properties=spark:spark.history.fs.logDirectory=gs://bucket-name/directory-name/spark-job-history
      
      --properties=spark:spark.eventLog.dir=gs://bucket-name/directory-name/spark-job-history
      
    • mapred:mapreduce.jobhistory.done-dir y mapred:mapreduce.jobhistory.intermediate-done-dir: De forma predeterminada, los archivos de historial de trabajos de MapReduce se guardan en el clúster. temp bucket en la /mapreduce-job-history/done y /mapreduce-job-history/intermediate-done directorios. El mapreduce.jobhistory.intermediate-done-dir intermedio la ubicación es un almacenamiento temporal; los archivos intermedios se mueven Ubicación mapreduce.jobhistory.done-dir cuando se completa el trabajo de MapReduce. Puedes agregar estas propiedades para especificar diferentes Cloud Storage ubicaciones de estos archivos. Si se usan ambas propiedades, deben apuntar a directorios en el mismo bucket.
      --properties=mapred:mapreduce.jobhistory.done-dir=gs://bucket-name/directory-name/mapreduce-job-history/done
      
      --properties=mapred:mapreduce.jobhistory.intermediate-done-dir=gs://bucket-name/directory-name/mapreduce-job-history/intermediate-done
      
    • spark:spark.history.fs.gs.outputstream.type y spark:spark.history.fs.gs.outputstream.sync.min.interval.ms: Agregar Conector de Cloud Storage para cambiar la configuración comportamiento de cómo el clúster del trabajo envía datos a Cloud Storage. El valor predeterminado de spark:spark.history.fs.gs.outputstream.type es BASIC, que envía datos a Cloud Storage una vez completado el trabajo. Puedes cambiar este parámetro de configuración a FLUSHABLE_COMPOSITE para cambiar el comportamiento de limpieza para copiar datos a Cloud Storage en intervalos regulares mientras se ejecuta el trabajo.
      --properties=spark:spark.history.fs.gs.outputstream.type=FLUSHABLE_COMPOSITE
      
      El valor predeterminado spark:spark.history.fs.gs.outputstream.sync.min.interval.ms, que controla la frecuencia con la que los datos se transfieren a Cloud Storage, es 5000ms y se puede cambiar a un intervalo de tiempo ms diferente:
      --properties=spark:spark.history.fs.gs.outputstream.sync.min.interval.ms=intervalms
      
      Nota: Para configurar estas propiedades, el clúster de trabajo de Dataproc versión con imágenes debe usar la versión 2.2.0 o posterior del conector de Cloud Storage. Puedes comprobar la versión del conector instalada en versiones de imagen desde el Lista de versiones de imágenes de Dataproc.
    • dataproc:yarn.atsv2.bigtable.instance: Después de Configurar el servicio de cronograma de Yarn v2, agrega esta propiedad para escribir datos de la línea de tiempo de YARN en el Instancia de Bigtable para visualizarla en el clúster de PHS Interfaces web de YARN Application Timeline Service V2 y Tez Nota: La creación del clúster fallará si lo hace la instancia de Bigtable no existen.
      --properties=dataproc:yarn.atsv2.bigtable.instance=projects/project-id/instance_id/bigtable-instance-id
      
    • flink:jobhistory.archive.fs.dir: Los archivos de Flink JobManager Trabajos de Flink completados mediante la carga de información archivada del trabajo en un directorio de sistema de archivos. Usa esta propiedad para configurar el directorio de archivos en flink-conf.yaml
      --properties=flink:jobmanager.archive.fs.dir=gs://bucket-name/job-cluster-1/flink-job-history/completed-jobs
      

Usa PHS con cargas de trabajo por lotes de Spark

Usar el servidor de historial persistente con Dataproc Serverless para Cargas de trabajo por lotes de Spark:

  1. Crea un clúster de PHS.

  2. Selecciona o especifica el clúster de PHS cuando enviar una carga de trabajo por lotes de Spark

Usa PHS con Dataproc en Google Kubernetes Engine

Para usar el servidor de historial persistente con Dataproc en GKE:

  1. Crea un clúster de PHS.

  2. Selecciona o especifica el clúster de PHS cuando Crea un clúster virtual de Dataproc on GKE.

Interfaces web de puerta de enlace de componentes

En la consola de Google Cloud, desde Dataproc En la página Clústeres, haz clic en el nombre del clúster de PHS. para abrir la página Detalles del clúster. En la pestaña Interfaces web, haz lo siguiente: selecciona los vínculos de la puerta de enlace del componente para abrir interfaces web que se ejecutan en el clúster de PHS.

Interfaz web del servidor de historial de Spark

En la siguiente captura de pantalla, se muestran los vínculos en la interfaz web del servidor de historial de Spark a los trabajos de Spark que se ejecutan en job-cluster-1 y en job-cluster-2 después de configurar configura spark.history.fs.logDirectory y spark:spark.eventLog.dir de los clústeres de trabajos y las ubicaciones spark.history.fs.logDirectory del clúster 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 enumerar los trabajos por Nombre de la app en la interfaz web del Servidor de historial de Spark si ingresas el nombre de una app en el cuadro de búsqueda. El nombre de la aplicación se puede establecer de una de las siguientes maneras: (enumerados por prioridad):

  1. Configurar dentro del código de la aplicación cuando se crea el contexto de Spark
  2. Establecido por el 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)

Los usuarios pueden ingresar un término de nombre de app o recurso en el cuadro de búsqueda. para buscar y enumerar trabajos.

Registros de eventos

La interfaz web del servidor de historial de Spark proporciona un botón de Registro de eventos que puedes haz 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 un ID de la app de Spark en la interfaz web para abrir la página Trabajos de Spark, que proporciona una línea de tiempo del evento 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 y abrirla. Página de detalles

    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 la capa los nodos del controlador y el ejecutor.

    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.

Interfaz web de Tez

Tez es el motor de ejecución predeterminado para Hive y Pig en Dataproc. Enviar un trabajo de Hive en un clúster de trabajo de Dataproc inicia un aplicación Tez (consulta Usar Apache Hive en Dataproc ).

Si configuraste el servicio de cronograma de Yarn v2 y establece la propiedad dataproc:yarn.atsv2.bigtable.instance cuando creó los clústeres de trabajo de PHS y Dataproc, YARN escribe datos de cronograma de trabajos de Hive y Pig generados a la Bigtable especificada para su recuperación y visualización en la interfaz web de Tez que se ejecuta en Servidor de PHS.

Interfaz web del cronograma de aplicaciones V2 de YARN

Si configuraste el servicio de cronograma de Yarn v2 y establece la propiedad dataproc:yarn.atsv2.bigtable.instance cuando creó los clústeres de trabajo de PHS y Dataproc, YARN escribe datos de la línea de tiempo de los trabajos generados en la instancia de Bigtable especificada para su recuperación y mostrar en la interfaz web del servicio de cronograma de aplicaciones de YARN que se ejecuta en Servidor de PHS. Los trabajos de Dataproc se enumeran en Actividad de flujo. en la interfaz web.

Configura el servicio de cronograma de Yarn v2

Para configurar el servicio de cronograma de Yarn v2, configura una instancia de Bigtable y, si es necesario, verifica los roles de las cuentas de servicio de la siguiente manera:

  1. Crear una instancia de Bigtable.

  2. Verifica los roles de las cuentas de servicio, si es necesario. Predeterminado Cuenta de servicio de VM que usan las VMs del clúster de Dataproc tiene los permisos necesarios para crear y configurar la instancia de Bigtable para el servicio de cronograma de YARN. Si creas tu trabajo o clúster de PHS con un cuenta de servicio de VM personalizada la cuenta debe tener Función Administrator o Bigtable User de Bigtable.

Esquema de tabla obligatorio

La compatibilidad de PHS de Dataproc para Servicio de cronograma de YARN v2 requiere un esquema específico creado en la de Bigtable. Dataproc crea el entorno esquema cuando se crea un clúster de trabajo o un clúster de PHS con el Se configuró la propiedad dataproc:yarn.atsv2.bigtable.instance para que apunte a de Bigtable.

A continuación, se muestra el esquema de instancia de Bigtable requerido:

Tablas Familias de columnas
prod.timelineservice.application c,i,m
prod.timelineservice.app_flow m
prod.timelineservice.entity c,i,m
prod.timelineservice.flowactivity i
prod.timelineservice.flowrun i
prod.timelineservice.subapplication c,i,m

Recolección de elementos no utilizados de Bigtable

Puedes configurar la recolección de elementos no utilizados de Bigtable basada en la edad para Tablas ATSv2:

  • Instala cbt (incluida la creación de .cbrtc file).

  • Crea la política de recolección de elementos no utilizados de ATSv2 basada en la antigüedad:

export NUMBER_OF_DAYS = number \
cbt setgcpolicy prod.timelineservice.application c maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.application i maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.application m maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.app_flow m maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.entity c maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.entity i maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.entity m maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.flowactivity i maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.flowrun i maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.subapplication c maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.subapplication i maxage=${NUMBER_OF_DAYS} \
cbt setgcpolicy prod.timelineservice.subapplication m maxage=${NUMBER_OF_DAYS}

Notas:

NUMBER_OF_DAYS: La cantidad máxima de días es 30d.