Prácticas recomendadas de Dataproc para la producción

En este documento, se analizan las prácticas recomendadas de Dataproc que pueden ayudarte a ejecutar trabajos de procesamiento de datos confiables, eficientes y detallados en clústeres de Dataproc en entornos de producción.

Especifica las versiones de la imagen del clúster

Dataproc usa versiones de imagen para empaquetar el sistema operativo, los componentes de macrodatos y los conectores de Google Cloud en un paquete que se implementa en un clúster. Si no especificas una versión de imagen cuando creas un clúster, Dataproc usa la versión de imagen estable más reciente de forma predeterminada.

Para los entornos de producción, asocia tu clúster con una versión específica de la imagen de Dataproc major.minor, como se muestra en el siguiente comando de gcloud CLI.

gcloud dataproc clusters create CLUSTER_NAME \
    --region=region \
    --image-version=2.0

Dataproc resuelve la versión major.minor a la última versión subsecundaria (2.0 se resuelve como 2.0.x). Nota: Si necesitas confiar en una versión subsecundaria específica para tu clúster, puedes especificarla: por ejemplo, --image-version=2.0.x. Consulta Cómo funciona el control de versiones para obtener más información.

Versiones de imágenes de vista previa de Dataproc

Las versiones secundarias nuevas de las imágenes de Dataproc están disponibles en una versión preview anterior al lanzamiento en el segmento estándar de la imagen secundaria. Usa una imagen de vista previa para probar y validar tus trabajos con una versión de imagen secundaria nueva antes de adoptar la versión estándar de imagen secundaria en producción. Consulta Control de versiones de Dataproc para obtener más información.

Usa imágenes personalizadas cuando sea necesario

Si tienes dependencias para agregar al clúster, como bibliotecas nativas de Python o software de endurecimiento de la seguridad o protección antivirus, crea una imagen personalizada a partir de la imagen más reciente en el segmento de la versión secundaria de la imagen de destino. Esta práctica te permite cumplir con los requisitos de las dependencias cuando creas clústeres con tu imagen personalizada. Cuando vuelvas a compilar tu imagen personalizada para actualizar los requisitos de las dependencias, usa la última versión de imagen subsecundaria disponible dentro del segmento de imágenes secundaria.

Envía trabajos al servicio de Dataproc

Envía trabajos al servicio de Dataproc con una llamada jobs.submit mediante la CLI de gcloud o la consola de Google Cloud. Otorga funciones de Dataproc a fin de configurar permisos de trabajos y clústeres. Usa funciones personalizadas para separar el acceso al clúster de los permisos de envío de trabajos.

Beneficios de enviar trabajos al servicio de Dataproc:

  • No se requieren parámetros de configuración de red complicados; la API es muy accesible
  • Permisos y roles de IAM fáciles de administrar
  • Haz un seguimiento del estado del trabajo con facilidad: no hay metadatos de trabajo de Dataproc para complicar los resultados.

En producción, ejecuta trabajos que solo dependan de dependencias a nivel de clúster en una versión de imagen secundaria fija, (por ejemplo, --image-version=2.0). Agrupa las dependencias con trabajos cuando se envíen los trabajos. Enviar un uber jar a Spark o MapReduce es una forma común de hacerlo.

  • Ejemplo: Si un jar de trabajo depende de args4j y spark-sql, con args4j específico para el trabajo y spark-sql una dependencia a nivel de clúster, agrupa args4j en el uber jar del trabajo.

Cómo controlar las ubicaciones de las acciones de inicialización

Las acciones de inicialización te permiten ejecutar secuencias de comandos o instalar componentes de forma automática cuando creas un clúster de Dataproc (consulta el repositorio de GitHub dataproc-initialization-actions para conocer las acciones de inicialización comunes de Dataproc). Cuando uses acciones de inicialización del clúster en un entorno de producción, copia las secuencias de comandos de inicialización en Cloud Storage, en lugar de obtenerlas de un repositorio público. Con esta práctica, se evita ejecutar secuencias de comandos de inicialización que estén sujetas a modificaciones por parte de otras personas.

Supervisa las notas de la versión de Dataproc

Dataproc lanza regularmente nuevas versiones de imágenes subsecundarias. Consulta las notas de la versión de Dataproc o suscríbete a ellas para conocer las versiones más recientes de las imágenes de Dataproc y otros anuncios, cambios y correcciones.

Visualiza el bucket de etapa de pruebas para investigar fallas

  1. Observa el bucket de etapa de pruebas del clúster para investigar los mensajes de error del trabajo y del clúster. Por lo general, la ubicación del bucket de etapa de pruebas de Cloud Storage se muestra en los mensajes de error, como aparece en el texto en negrita en el siguiente mensaje de error de muestra:

    ERROR:
    (gcloud.dataproc.clusters.create) Operation ... failed:
    ...
    - Initialization action failed. Failed action ... see output in:
    gs://dataproc-<BUCKETID>-us-central1/google-cloud-dataproc-metainfo/CLUSTERID/<CLUSTER_ID>\dataproc-initialization-script-0_output
     

  2. Usa gsutil para ver el contenido del bucket de etapa de pruebas:

    gsutil cat gs://STAGING_BUCKET
    
    Resultado de muestra:
    + readonly RANGER_VERSION=1.2.0
    ... Ranger admin password not set. Please use metadata flag - default-password
    

Obtener asistencia

Google Cloud admite tus cargas de trabajo de OSS de producción y te ayuda a cumplir con los ANS de tu empresa mediante niveles de asistencia. Además, los servicios de consultoría de Google Cloud pueden proporcionar orientación sobre las prácticas recomendadas para las implementaciones de producción de tu equipo.

Para más información