Habilitar Data Jobs Monitoring para Spark en Google Cloud Dataproc
Data Jobs Monitoring ofrece visibilidad sobre el rendimiento y la fiabilidad de las aplicaciones de Apache Spark en Google Cloud Dataproc.
Requisitos
Esta guía se ha diseñado para clústeres de Dataproc en Compute Engine. Si usas Dataproc en GKE, consulta la guía de instalación de Kubernetes.
Se requiere la versión 2.0.x de Dataproc, o una posterior. Se admiten todas las imágenes estándar de Dataproc para Debian, Rocky Linux y Ubuntu.
Configuración
Sigue estos pasos para habilitar Data Jobs Monitoring para GCP Dataproc.
- Almacena tu clave de API de Datadog en GCP Secret Manager (recomendado).
- Crea y configura tu clúster de Dataproc.
- Especifica el etiquetado de servicios por aplicación de Spark.
Almacenar la clave de API de Datadog en Google Cloud Secret Manager (recomendado)
- Toma nota de tu clave de API de Datadog.
- En GCP Secret Manager, elige Create secret (Crear secreto).
- En Name (Nombre), ingresa un Secret name (Nombre de secreto). Puedes usar
dd_api_key
. - En Secret value (Valor de secreto), pega tu clave de API de Datadog en el cuadro de texto Secret value (Valor de secreto).
- Haz clic en Create Secret (Crear secreto).
- De manera opcional, en Rotation (Rotación), puedes activar la rotación automática.
- En GCP Secret Manager, abre el secreto que creaste. Toma nota del ID de recurso, que tiene el formato «proyectos/<PROJECT_NAME>/secretos/<SECRET_NAME>».
- Asegúrate de que la cuenta de servicio que usa tu clúster de Dataproc tenga permiso para leer el secreto. De manera predeterminada, este es
Compute Engine default service account
(Cuenta de servicio predeterminada de Compute Engine). Para otorgar acceso, copia la entidad de la cuenta de servicio asociada y haz clic en Grant Access (Otorgar acceso) en la pestaña Permissions (Permisos) de la página del secreto. Asigna el rol secretmanager.secretAccessor
o cualquier otro que tenga el permiso secretmanager.versions.access
. Consulta la documentación de roles de IAM para obtener una descripción completa de los roles disponibles.
Crear y configurar el clúster de Dataproc
Cuando crees un clúster de Dataproc nuevo en Compute Engine en la consola de Google Cloud, añade una acción de inicialización en la página Customize cluster (Personalizar clúster):
Guarda el siguiente script en un bucket de GCS que tu clúster de Dataproc pueda leer. Toma nota de la ruta a este script.
#!/bin/bash
# Set required parameter DD_SITE
export DD_SITE=
# Set required parameter DD_API_KEY with Datadog API key.
# The commands below assumes the API key is stored in GCP Secret Manager, with the secret name as dd_api_key and the project <PROJECT_NAME>.
# IMPORTANT: Modify if you choose to manage and retrieve your secret differently.
# Change the project name, which you can find on the secrets page. The resource ID is in the format "projects/<PROJECT_NAME>/secrets/<SECRET_NAME>".
PROJECT_NAME=<PROJECT_NAME>
gcloud config set project $PROJECT_NAME
SECRET_NAME=dd_api_key
export DD_API_KEY=$(gcloud secrets versions access latest --secret $SECRET_NAME)
# Download and run the latest init script
curl -L https://install.datadoghq.com/scripts/install-dataproc.sh > djm-install-script; bash djm-install-script || true
El script anterior establece los parámetros necesarios y descarga y ejecuta el último script de inicialización para Data Jobs Monitoring en Dataproc. Si quieres fijar tu script a una versión específica, puedes sustituir el nombre del archivo en la URL por install-dataproc-0.9.1.sh
para usar la versión 0.9.1
, por ejemplo. El código fuente que se usa para generar este script se puede encontrar en el repositorio del Datadog Agent.
En la página Customize cluster (Personalizar clúster), busca la sección Initialization Actions (Acciones de inicialización). Ingresa la ruta donde guardaste el script del paso anterior.
Cuando se crea el clúster, esta acción de inicialización instala el Datadog Agent y descarga el rastreador de Java en cada nodo del clúster.
Especificar el etiquetado de servicios por aplicación de Spark
El etiquetado te permite filtrar, agregar y comparar mejor tu telemetría en Datadog. Puedes configurar etiquetas (tags) al pasar las opciones -Ddd.service
, -Ddd.env
, -Ddd.version
y -Ddd.tags
a las propiedades extraJavaOptions
del controlador y ejecutor de Spark.
En Datadog, el nombre de cada trabajo corresponde al valor establecido para -Ddd.service
.
spark-submit \
--conf spark.driver.extraJavaOptions="-Ddd.service=<JOB_NAME> -Ddd.env=<ENV> -Ddd.version=<VERSION> -Ddd.tags=<KEY_1>:<VALUE_1>,<KEY_2:VALUE_2>" \
--conf spark.executor.extraJavaOptions="-Ddd.service=<JOB_NAME> -Ddd.env=<ENV> -Ddd.version=<VERSION> -Ddd.tags=<KEY_1>:<VALUE_1>,<KEY_2:VALUE_2>" \
application.jar
Validación
En Datadog, consulta la página Data Jobs Monitoring para ver una lista de todos tus trabajos de procesamiento de datos.
Solucionar problemas
If you don’t see any data in DJM after installing the product, follow those steps.
The init script installs the Datadog Agent. To make sure it is properly installed, ssh into the cluster and run the Agent status command:
sudo datadog-agent status
Configuración avanzada
Tramos (spans) de etiquetas en tiempo de ejecución
You can set tags on Spark spans at runtime. These tags are applied only to spans that start after the tag is added.
// Add tag for all next Spark computations
sparkContext.setLocalProperty("spark.datadog.tags.key", "value")
spark.read.parquet(...)
To remove a runtime tag:
// Remove tag for all next Spark computations
sparkContext.setLocalProperty("spark.datadog.tags.key", null)
Referencias adicionales
Más enlaces, artículos y documentación útiles: