Prácticas recomendadas de Dataproc para producción

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

Especificar versiones de imagen de clúster

Dataproc usa versiones de imagen para agrupar el sistema operativo, los componentes de Big Data y los Google Cloud conectores en un paquete que se despliega en un clúster. Si no especificas una versión de imagen al crear un clúster, Dataproc usará de forma predeterminada la versión de imagen estable más reciente.

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

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

Dataproc resuelve la versión major.minor a la versión secundaria más reciente (2.0 se resuelve a 2.0.x). Nota: Si necesitas usar una versión secundaria específica para tu clúster, puedes especificarla. Por ejemplo, --image-version=2.0.x. Para obtener más información, consulta Cómo funciona el control de versiones.

Versiones de imagen 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 la pista de la versión secundaria estándar de la imagen. Usa una imagen de vista previa para probar y validar tus trabajos con una nueva versión secundaria de la imagen antes de adoptar la versión secundaria estándar de la imagen en producción. Para obtener más información, consulta Control de versiones de Dataproc.

Usar imágenes personalizadas cuando sea necesario

Si tienes dependencias que añadir al clúster, como bibliotecas nativas de Python o software de protección antivirus o de refuerzo de la seguridad, crea una imagen personalizada a partir de la imagen más reciente de la versión secundaria de la imagen de destino. Esta práctica le permite cumplir los requisitos de dependencia cuando crea clústeres con su imagen personalizada. Cuando vuelvas a compilar tu imagen personalizada para actualizar los requisitos de las dependencias, usa la versión secundaria más reciente de la imagen en la pista de la imagen principal.

Enviar tareas al servicio Dataproc

Envía tareas al servicio Dataproc con una llamada jobs.submit mediante la CLI de gcloud o la consola Google Cloud . Define los permisos de tareas y clústeres asignando roles de Dataproc. Usa roles personalizados para separar el acceso al clúster de los permisos de envío de trabajos.

Ventajas de enviar tareas al servicio Dataproc:

  • No se necesitan ajustes de red complicados: la API es accesible en muchos sitios
  • Gestión sencilla de permisos y roles de gestión de identidades y accesos
  • Monitoriza fácilmente el estado de los trabajos, sin metadatos de trabajos de Dataproc que compliquen los resultados.

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

  • Ejemplo: si un archivo JAR de trabajo depende de args4j y spark-sql, donde args4j es específico del trabajo y spark-sql es una dependencia a nivel de clúster, incluye args4j en el archivo uber JAR del trabajo.

Controlar las ubicaciones de las acciones de inicialización

Las acciones de inicialización te permiten ejecutar automáticamente secuencias de comandos o instalar componentes al crear un clúster de Dataproc (consulta el repositorio de GitHub dataproc-initialization-actions para ver las acciones de inicialización de Dataproc habituales). Cuando utilices 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. De esta forma, se evita ejecutar secuencias de comandos de inicialización que otros usuarios puedan modificar.

Monitorizar las notas de la versión de Dataproc

Dataproc publica con regularidad nuevas versiones secundarias de imágenes. Consulta o suscríbete a las notas de la versión de Dataproc para estar al tanto de las últimas versiones de la imagen de Dataproc y de otros anuncios, cambios y correcciones.

Ver el segmento de almacenamiento provisional para investigar los fallos

  1. Consulta el segmento de staging de tu clúster para investigar los mensajes de error del clúster y de las tareas. Normalmente, la ubicación del segmento de Cloud Storage de almacenamiento provisional se muestra en los mensajes de error, como se indica en el texto en negrita del siguiente mensaje de error de ejemplo:

    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 la CLI de gcloud para ver el contenido del bucket de almacenamiento provisional:

    gcloud storage cat gs://STAGING_BUCKET
    
    Ejemplo de salida:
    + 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 tus acuerdos de nivel de servicio empresariales a través de niveles de asistencia. Además, Google Cloud Consulting Services puede ofrecerte orientación sobre las prácticas recomendadas para las implementaciones de producción de tu equipo.

Más información