Configuración del clúster de Dataproc

En Cloud Data Fusion, la configuración del clúster se refiere a la definición de cómo tus canalizaciones de procesamiento de datos utilizan los recursos de procesamiento cuando ejecutan trabajos de Spark en Dataproc. En esta página, se describen los principales enfoques para la configuración de clústeres.

Clústeres efímeros predeterminados (recomendado)

Usar los clústeres predeterminados es el enfoque recomendado para las canalizaciones de Cloud Data Fusion.

  • Cloud Data Fusion aprovisiona y administra automáticamente clústeres de Dataproc efímeros para cada ejecución de canalización. Crea un clúster al comienzo de la ejecución de la canalización y, luego, lo borra cuando finaliza la ejecución de la canalización.
  • Beneficios de los clústeres efímeros:
    • Simplicidad: No es necesario que configures ni administres el clúster de forma manual.
    • Rentabilidad: Solo pagas por los recursos que se usan durante la ejecución de la canalización.

Para ajustar los clústeres y optimizar el rendimiento, consulta Tamaño del clúster.

Clústeres estáticos (para situaciones específicas)

En las siguientes situaciones, puedes usar clústeres estáticos:

  • Canalizaciones de larga duración: Para las canalizaciones que se ejecutan de forma continua o durante períodos prolongados, un clúster estático puede ser más rentable que crear y destruir repetidamente clústeres efímeros.
  • Administración centralizada de clústeres: Si tu organización requiere un control centralizado sobre las políticas de creación y administración de clústeres, los clústeres estáticos se pueden usar junto con herramientas como Terraform.
  • Tiempo de creación del clúster: Cuando el tiempo que lleva crear un clúster nuevo para cada canalización es adecuado para tu caso de uso.

Sin embargo, los clústeres estáticos requieren más configuración manual y la administración del ciclo de vida del clúster por tu cuenta.

Para usar un clúster estático, debes configurar las siguientes propiedades en el clúster de Dataproc:

dataproc:dataproc.conscrypt.provider.enable=false
capacity-scheduler:yarn.scheduler.capacity.resource-calculator="org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator"

Opciones de configuración del clúster para clústeres estáticos

Si eliges usar clústeres estáticos, Cloud Data Fusion ofrece opciones de configuración para los siguientes aspectos:

  • Tipo de máquina de trabajador: Especifica el tipo de máquina virtual para los nodos trabajadores de tu clúster. Esto determina las CPU virtuales y la memoria disponibles para cada trabajador.
  • Cantidad de trabajadores: Define la cantidad inicial de nodos trabajadores en tu clúster. Es posible que Dataproc aún ajuste automáticamente la escala de esta cantidad según la carga de trabajo.
  • Zona: Selecciona la Google Cloud zona de tu clúster. La ubicación puede afectar la localidad de los datos y el rendimiento de la red.
  • Configuraciones adicionales: Puedes configurar opciones avanzadas para tu clúster estático, como la configuración de preferencia, la configuración de red y las acciones de inicialización.

Prácticas recomendadas

Cuando crees un clúster estático para tus canalizaciones, usa las siguientes configuraciones.

Parámetros Descripción
yarn.nodemanager.delete.debug-delay-sec Retiene los registros de YARN.
Valor recomendado: 86400 (equivalente a un día)
yarn.nodemanager.pmem-check-enabled Permite que YARN verifique los límites de memoria física y cierre los contenedores si superan la memoria física.
Valor recomendado: false
yarn.nodemanager.vmem-check-enabled Permite que YARN verifique los límites de memoria virtual y cierre los contenedores si superan la memoria física.
Valor recomendado: false
dataproc.scheduler.driver-size-mb La huella de memoria promedio del controlador hace que Dataproc ponga en cola el trabajo si el nodo principal no tiene suficiente memoria para ejecutar el proceso del controlador. Esto puede afectar la concurrencia de trabajos, pero se puede mitigar usando un nodo principal con más memoria.
Valor recomendado: 2048

Para obtener más información, consulta Ejecuta una canalización en un clúster existente de Dataproc.

Cómo reutilizar clústeres

Puedes reutilizar los clústeres de Dataproc entre ejecuciones para mejorar el tiempo de procesamiento. La reutilización del clúster se implementa en un modelo similar a la agrupación de conexiones o la agrupación de subprocesos. Cualquier clúster se mantiene en funcionamiento durante un tiempo especificado después de que finaliza la ejecución. Cuando se inicia una ejecución nueva, se intentará encontrar un clúster inactivo disponible que coincida con la configuración del perfil de procesamiento. Si hay uno presente, se usará; de lo contrario, se iniciará un clúster nuevo.

Consideraciones para reutilizar clústeres

  • Los clústeres no se comparten. Al igual que el modelo de aprovisionamiento de clústeres efímeros normal, un clúster ejecuta una sola ejecución de canalización a la vez. Un clúster solo se reutiliza si está inactivo.
  • Si habilitas la reutilización de clústeres para todas tus ejecuciones, se creará la cantidad necesaria de clústeres para procesar todas tus ejecuciones según sea necesario. Al igual que con el aprovisionador efímero de Dataproc, no hay control directo sobre la cantidad de clústeres creados. Aún puedes usar comillas Google Cloud para administrar recursos. Por ejemplo, si ejecutas 100 ejecuciones con 7 ejecuciones paralelas máximas, tendrás hasta 7 clústeres en un momento determinado.
  • Los clústeres se reutilizan entre diferentes canalizaciones tan pronto como esas canalizaciones usan el mismo perfil y comparten la misma configuración de perfil. Si se usa la personalización del perfil, los clústeres se seguirán reutilizando, pero solo si las personalizaciones son exactamente iguales, incluidos todos los parámetros de configuración del clúster, como el etiquetado del clúster.

  • Cuando se habilita la reutilización de clústeres, hay dos consideraciones principales sobre los costos:

    • Se usan menos recursos para el inicio y la inicialización del clúster.
    • Se usan más recursos para que los clústeres permanezcan inactivos entre las ejecuciones de la canalización y después de la última ejecución.

Si bien es difícil predecir el efecto del costo del uso repetido del clúster, puedes emplear una estrategia para obtener el máximo ahorro. La estrategia consiste en identificar una ruta crítica para las canalizaciones encadenadas y habilitar la reutilización del clúster para esta ruta crítica. Esto garantizaría que el clúster se reutilice de inmediato, no se desperdicie tiempo de inactividad y se logren los máximos beneficios de rendimiento.

Habilita la reutilización del clúster

En la sección Compute Config de la configuración de la canalización implementada o cuando se crea un nuevo perfil de procesamiento:

  • Habilita Skip Cluster Delete.
  • El tiempo de inactividad máximo es el tiempo durante el cual un clúster espera la próxima canalización para reutilizarla. El tiempo de inactividad máximo predeterminado es de 30 minutos. En el caso de Max Idle Time, considera el costo en comparación con la disponibilidad del clúster para su reutilización. Cuanto mayor sea el valor de Max Idle Time, más clústeres permanecerán inactivos y listos para una ejecución.

Solución de problemas: Compatibilidad de versiones

Problema: Es posible que la versión del entorno de Cloud Data Fusion no sea compatible con la versión del clúster de Dataproc.

Recomendado: Actualiza a la versión más reciente de Cloud Data Fusion y usa una de las versiones compatibles de Dataproc.

Las versiones anteriores de Cloud Data Fusion solo son compatibles con versiones no compatibles de Dataproc. Dataproc no proporciona actualizaciones ni asistencia para los clústeres creados con estas versiones. Aunque puedes seguir ejecutando un clúster que se creó con una versión no compatible, te recomendamos que lo reemplaces por uno creado con una versión compatible.

Versión de Cloud Data Fusion Versión de Dataproc
6.11.1 2.3
6.10.1.1 2.2***, 2.1, 2.0 *
6.10 2.1 y 2.0 *
6.9 2.1, 2.0, 1.5 *
6.7-6.8 2.0, 1.5 *
6.4-6.6 2.0 *, 1.3 **
6.1-6.3 1.3**

* Las versiones 6.4 y posteriores de Cloud Data Fusion son compatibles con las versiones admitidas de Dataproc. A menos que se necesiten funciones específicas del SO, la práctica recomendada es especificar la versión de la imagen major.minor.
Para especificar la versión del SO que se usa en tu clúster de Dataproc, la versión del SO debe ser compatible con una de las versiones de Dataproc admitidas para tu Cloud Data Fusion en la tabla anterior.

** Las versiones de Cloud Data Fusion de 6.1 a 6.6 son compatibles con la versión 1.3 no compatible de Dataproc.

*** Se detectaron ciertos problemas con esta versión de la imagen. No se recomienda usar esta versión de imagen de Dataproc en producción.

Solución de problemas: El contenedor salió con un código de salida distinto de cero 3

Problema: No se usa una política de ajuste de escala automático, y los clústeres estáticos de Dataproc experimentan presión de memoria, lo que provoca que aparezca una excepción de memoria insuficiente en los registros: Container exited with a non-zero exit code 3.

Recomendado: Aumenta la memoria del ejecutor.

Aumenta la memoria agregando un argumento de task.executor.system.resources.memory tiempo de ejecución a la canalización. El siguiente argumento de tiempo de ejecución de ejemplo establece la memoria en 4096 MB:

"task.executor.system.resources.memory": 4096

Para obtener más información, consulta Tamaño del clúster.

¿Qué sigue?