En Cloud Data Fusion, la configuración del clúster se refiere a la definición de cómo las canalizaciones de procesamiento de datos utilizan los recursos de procesamiento cuando ejecutan trabajos de Spark en Managed Service for Apache Spark. En esta página, se describen los enfoques principales para la configuración del clúster.
Clústeres efímeros predeterminados (recomendado)
El uso de 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 efímeros de Managed Service for Apache Spark 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 la finaliza.
- Beneficios de los clústeres efímeros:
- Simplicidad: No necesitas configurar ni administrar el clúster de forma manual.
- Rentabilidad: Solo pagas por los recursos que se usaron 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 eliminar clústeres efímeros de forma repetida.
- 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, se pueden usar clústeres estáticos 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 prohibitivo 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.
Para usar un clúster estático, debes establecer las siguientes propiedades en el clúster de Managed Service for Apache Spark:
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. Managed Service for Apache Spark aún puede ajustar automáticamente esta cantidad según la carga de trabajo.
- Zona: Selecciona la zona de tu clúster Google Cloud zona. 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 expulsión, 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 Managed Service for Apache Spark ponga en cola el trabajo si el nodo principal no tiene suficiente memoria para ejecutar el proceso del controlador. Esto puede afectar la simultaneidad del trabajo, pero se puede mitigar con el uso de 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 Managed Service for Apache Spark.
Reutiliza clústeres
Puedes reutilizar clústeres de Managed Service for Apache Spark entre ejecuciones para mejorar el tiempo de procesamiento. La reutilización de clústeres 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 intenta encontrar un clúster inactivo disponible que coincida con la configuración del perfil de procesamiento. Si hay uno, se usará; de lo contrario, se iniciará un clúster nuevo.
Consideraciones para reutilizar clústeres
- Los clústeres no se comparten. De manera similar al 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 se reutiliza solo 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. De manera similar al aprovisionador efímero de Managed Service for Apache Spark, no hay control directo sobre la cantidad de clústeres creados. Aún puedes usar Google Cloud cuotas 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 en cuanto 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 las mismas, incluida toda la configuración del clúster, como el etiquetado del clúster.
Cuando se habilita la reutilización de clústeres, hay dos consideraciones de costos principales:
- 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 canalización y después de la última ejecución de canalización.
Si bien es difícil predecir el efecto del costo de la reutilización de clústeres, 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 de clústeres 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 de clústeres
En la sección Compute Config de la configuración de la canalización implementada o cuando creas un perfil de procesamiento nuevo, haz lo siguiente:
- Habilita Skip Cluster Delete.
- Max Idle Time es el tiempo hasta el que un clúster espera a que la próxima canalización lo reutilice. El valor predeterminado de Max Idle Time es de 30 minutos. Para Max Idle Time, considera el costo en comparación con la disponibilidad del clúster para la 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 de tu entorno de Cloud Data Fusion no sea compatible con la versión del clúster de Managed Service for Apache Spark.
Recomendado: Actualiza a la versión más reciente de Cloud Data Fusion y usa una de las versiones compatibles de Managed Service for Apache Spark.
Las versiones anteriores de Cloud Data Fusion solo son compatibles con versiones no compatibles de Managed Service for Apache Spark. Managed Service for Apache Spark 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 Managed Service for Apache Spark |
|---|---|
| 6.11.1 | 2.3, 2.2***, 2.1 |
| 6.10.1.1 | 2.2***, 2.1, 2.0 * |
| 6.10 | 2.1, 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** |
major.minor versión de imagen.Para especificar la versión del SO que se usa en tu clúster de Managed Service for Apache Spark, la versión del SO debe ser compatible con una de las versiones compatibles de Managed Service for Apache Spark para tu Cloud Data Fusion en la tabla anterior.
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 Managed Service for Apache Spark experimentan presión de memoria, lo que provoca que aparezca una excepción de falta de memoria en los registros: Container exited with a non-zero
exit code 3.
Recomendado: Aumenta la memoria del ejecutor.
Para aumentar la memoria, agrega un argumento de tiempo de ejecución task.executor.system.resources.memory a la canalización. En el siguiente ejemplo de argumento de tiempo de ejecución, se establece la memoria en 4096 MB:
"task.executor.system.resources.memory": 4096
Para obtener más información, consulta Tamaño del clúster.