En Cloud Data Fusion, la configuración de clústeres se refiere a la definición de cómo utilizan los recursos computacionales los flujos de procesamiento de datos al ejecutar trabajos de Spark en Dataproc. En esta página se describen los principales enfoques para configurar clústeres.
Clústeres efímeros predeterminados (recomendado)
Usar los clústeres predeterminados es el método recomendado para los flujos de procesamiento de Cloud Data Fusion.
- Cloud Data Fusion aprovisiona y gestiona automáticamente clústeres de Dataproc efímeros para cada ejecución de flujo de procesamiento. Crea un clúster al principio de la ejecución del flujo de procesamiento y, a continuación, lo elimina cuando finaliza la ejecución.
- Ventajas de los clústeres efímeros:
- Sencillez: no es necesario configurar ni gestionar el clúster manualmente.
- Rentabilidad: solo pagas por los recursos utilizados durante la ejecución de la canalización.
Para ajustar los clústeres y optimizar el rendimiento, consulta Tamaño de los clústeres.
Clústeres estáticos (para situaciones concretas)
En los siguientes casos, puedes usar clústeres estáticos:
- Pipelines de larga duración: en el caso de los pipelines que se ejecutan de forma continua o durante periodos prolongados, un clúster estático puede ser más rentable que crear y eliminar repetidamente clústeres efímeros.
- Gestión de clústeres centralizada: si tu organización necesita un control centralizado sobre las políticas de creación y gestión de clústeres, puedes usar clústeres estáticos junto con herramientas como Terraform.
- Tiempo de creación del clúster: cuando el tiempo que se tarda en crear un clúster nuevo para cada canalización es prohibitivo para tu caso práctico.
Sin embargo, los clústeres estáticos requieren más configuración manual y conllevan la gestión del ciclo de vida del clúster.
Para usar un clúster estático, debes definir 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 de clústeres estáticos
Si decides usar clústeres estáticos, Cloud Data Fusion ofrece opciones de configuración para los siguientes aspectos:
- Tipo de máquina de los trabajadores: especifica el tipo de máquina virtual de los nodos de trabajador de tu clúster. Esto determina las vCPUs y la memoria disponibles para cada trabajador.
- Número de trabajadores: define el número inicial de nodos de trabajador de tu clúster. Dataproc podría seguir autoescalando este número en función de la carga de trabajo.
- Zona: selecciona la zona de tu clúster. Google Cloud La ubicación puede afectar a la localidad de los datos y al rendimiento de la red.
- Configuraciones adicionales: puedes configurar opciones avanzadas para tu clúster estático, como ajustes de preferencia, ajustes de red y 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 |
Conserva los registros de YARN. Valor recomendado: 86400 (equivalente a un día) |
yarn.nodemanager.pmem-check-enabled |
Permite que YARN compruebe 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 compruebe 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 media del controlador hace que Dataproc ponga en cola el trabajo si el nodo maestro no tiene suficiente memoria para ejecutar el proceso del controlador. Esto puede afectar a la concurrencia de los trabajos, pero se puede mitigar usando un nodo maestro con más memoria. Valor recomendado: 2048 |
Para obtener más información, consulta Ejecutar un flujo de procesamiento en un clúster de Dataproc ya creado.
Reutilizar clústeres
Puedes reutilizar clústeres de Dataproc 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 de subprocesos. Los clústeres se mantienen activos durante un periodo de tiempo especificado después de que finalice la ejecución. Cuando se inicia una nueva ejecución, se intenta encontrar un clúster inactivo disponible que coincida con la configuración del perfil de cálculo. Si hay alguno, se usará; de lo contrario, se iniciará un nuevo clúster.
Consideraciones para reutilizar clústeres
- Los clústeres no se comparten. Al igual que en el modelo de aprovisionamiento de clústeres efímeros normal, un clúster ejecuta un solo flujo de procesamiento a la vez. Un clúster solo se reutiliza si está inactivo.
- Si habilitas la reutilización de clústeres en todas tus ejecuciones, se creará el número necesario 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 el número de clústeres creados. Puedes seguir usando las Google Cloud citas para gestionar recursos. Por ejemplo, si ejecutas 100 ejecuciones con un máximo de 7 ejecuciones paralelas, tendrás hasta 7 clústeres en un momento dado.
Los clústeres se reutilizan entre diferentes pipelines en cuanto estos utilizan el mismo perfil y comparten los mismos ajustes de perfil. Si se usa la personalización de perfiles, los clústeres se seguirán reutilizando, pero solo si las personalizaciones son exactamente las mismas, incluidos todos los ajustes de los clústeres, como el etiquetado de clústeres.
Si la reutilización de clústeres está habilitada, hay dos aspectos principales que debes tener en cuenta en relación con los costes:
- 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.
Aunque es difícil predecir el efecto en los costes de la reutilización de clústeres, puedes emplear una estrategia para conseguir el máximo ahorro. La estrategia consiste en identificar una ruta crítica para las pipelines encadenadas y habilitar la reutilización de clústeres para esta ruta crítica. De esta forma, el clúster se reutilizará inmediatamente, no se perderá tiempo de inactividad y se conseguirán las máximas ventajas de rendimiento.
Habilitar la reutilización de clústeres
En la sección Configuración de computación de la configuración de la canalización implementada o al crear un nuevo perfil de computación:
- Habilita Omitir eliminación de clúster.
- Tiempo máximo de inactividad es el tiempo que espera un clúster hasta que la siguiente canalización lo reutiliza. El tiempo máximo de inactividad predeterminado es de 30 minutos. En el caso de Tiempo máximo de inactividad, ten en cuenta el coste frente a la disponibilidad del clúster para reutilizarlo. Cuanto mayor sea el valor de Tiempo máximo de inactividad, más clústeres estarán inactivos y listos para ejecutarse.
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 de tu clúster de Dataproc.
Recomendación: Actualiza a la versión más reciente de Cloud Data Fusion y usa una de las versiones de Dataproc admitidas.
Las versiones anteriores de Cloud Data Fusion solo son compatibles con versiones no admitidas 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 haya creado con una versión no compatible, te recomendamos que lo sustituyas 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, 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
.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 versión de Cloud Data Fusion en la tabla anterior.
Solución de problemas: el contenedor se ha cerrado con un código de salida distinto de cero 3
Problema: No se usa ninguna política de autoescalado y los clústeres de Dataproc estáticos tienen problemas 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
.
Recomendación: aumenta la memoria del ejecutor.
Aumenta la memoria añadiendo un argumento de task.executor.system.resources.memory
tiempo de ejecución
a la canalización. El siguiente ejemplo de argumento de tiempo de ejecución asigna 4096 MB a la memoria:
"task.executor.system.resources.memory": 4096
Para obtener más información, consulta Tamaño del clúster.
Siguientes pasos
- Consulta el artículo sobre cómo cambiar la versión de la imagen de Dataproc.