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 tareas de procesamiento de datos confiables, eficientes y perspicaces en clústeres de Dataproc en entornos de producción.

Especifica las versiones de imagen del clúster

Dataproc usa versiones de imágenes para agrupar 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 la imagen cuando creas un clúster, Dataproc usa la versión de imagen estable más reciente de forma predeterminada.

En el caso de los entornos de producción, asocia tu clúster con una versión específica de la imagen de major.minor de Dataproc, 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 versión más reciente de la subversión (2.0 se resuelve a 2.0.x). Nota: Si necesitas usar una subversión 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 con imágenes de vista previa de Dataproc

Las nuevas versiones secundarias de las imágenes de Dataproc están disponibles en una versión preview antes del lanzamiento en el segmento estándar de versiones secundarias de imágenes. Usa una imagen preliminar para probar y validar tus trabajos en una nueva versión secundaria de la imagen antes de adoptar la versión secundaria estándar de la imagen 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 de Python nativas, software de protección contra virus o endurecimiento de la seguridad, crea una imagen personalizada a partir de la imagen más reciente en tu segmento de versión de imagen menor objetivo. Esta práctica te permite cumplir con los requisitos de dependencia cuando creas clústeres con tu imagen personalizada. Cuando vuelvas a compilar tu imagen personalizada para actualizar los requisitos de dependencia, usa la versión de imagen subsecundaria más reciente disponible dentro del segmento de imagen secundaria.

Envía trabajos al servicio de Dataproc

Envía trabajos al servicio de Dataproc con una llamada jobs.submit con gcloud CLI o la consola de Google Cloud. Para configurar los permisos de trabajo y clúster, otorga roles de Dataproc. Usa roles personalizados 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 requiere una configuración de red complicada, ya que la API es de fácil acceso.
  • Administrar fácilmente los permisos y roles de IAM
  • Hacer un seguimiento del estado de los trabajos fácilmente (sin metadatos de trabajos de Dataproc que compliquen los resultados)

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

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

Controla las ubicaciones de las acciones de inicialización

Las acciones de inicialización te permiten ejecutar secuencias de comandos o instalar componentes automáticamente cuando creas un clúster de Dataproc (consulta el repositorio de GitHub dataproc-initialization-actions para ver acciones de inicialización comunes de Dataproc). Cuando uses acciones de inicialización de clústeres 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. Esta práctica evita ejecutar secuencias de comandos de inicialización que están sujetas a modificaciones por parte de terceros.

Notas de la versión de Dataproc de supervisión

Dataproc lanza versiones secundarias nuevas de imágenes con regularidad. Consulta las notas de la versión de Dataproc o suscríbete a ellas para estar al tanto de las versiones de imágenes de Dataproc más recientes y otros anuncios, cambios y correcciones.

Cómo ver el bucket de etapa para investigar las fallas

  1. Consulta el bucket de etapa de pruebas de tu clúster para investigar los mensajes de error del clúster y del trabajo. Por lo general, la ubicación de Cloud Storage del bucket de preparación se muestra en los mensajes de error, como se muestra en el texto en negrita del 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 gcloud CLI para ver el contenido del bucket de etapa:

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

Obtenga asistencia

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

Más información