Tamaño del clúster

De forma predeterminada, Cloud Data Fusion usó el ajuste de escala automático como perfil de procesamiento. Calcular el mejor número de trabajadores del clúster (nodos) para una carga de trabajo es difícil, y un tamaño de clúster único para una canalización completa a menudo no es ideal. El ajuste de escala automático de Dataproc proporciona un mecanismo para automatizar y habilita el ajuste de escala automático de VM de trabajador del clúster. Para ver más consulta Ajuste de escala automático

En la página Configuración de procesamiento, donde puedes ver una lista de perfiles, verás una La columna Total de núcleos, que tiene la cantidad máxima de CPU v que el perfil puede escalar verticalmente, por ejemplo, Up to 84.

Si quieres usar el perfil de procesamiento de Dataproc , puedes administrar del clúster según el tamaño de la canalización.

Nodo principal

Los nodos de instancia principal usan recursos de forma proporcional a la cantidad de canalizaciones o aplicaciones adicionales que se ejecutan en el clúster. Si ejecutas canalizaciones en clústeres efímeros, usa 2 CPU y 8 GB de memoria para la instancia principal nodos. Si usas clústeres persistentes, es posible que necesites nodos principales más grandes. para estar al día con el flujo de trabajo. Para saber si necesitas nodos principales más grandes, puede supervisar el uso de la memoria y de la CPU en el nodo. Recomendamos que dimensiones nodos trabajadores con al menos 2 CPU y 8 GB de memoria. Si has configuraste tus canalizaciones para usar mayores cantidades de memoria, debes usar con trabajadores más grandes.

A fin de minimizar el tiempo de ejecución, asegúrate de que tu clúster tenga suficientes nodos para permitir el procesamiento lo más paralelo posible.

Trabajadores

En las siguientes secciones, se describen aspectos del tamaño de los nodos trabajadores.

CPU y memoria

Recomendamos que definas el tamaño de tus nodos trabajadores con al menos 2 CPU y 8 GB memoria. Si configuraste tus canalizaciones para que usen más memoria, usa con trabajadores más grandes. Por ejemplo, con un nodo trabajador de 4 CPU y 15 GB, cada tendrá 4 CPU y 12 GB disponibles para ejecutar contenedores YARN. Si tu canalización está configurada para ejecutar 1 CPU, ejecutores de 8 GB, YARN es no puede ejecutar más de un contenedor por nodo trabajador. Cada nodo trabajador tienes 3 CPU y 4 GB adicionales que se desperdician porque no se pueden usar ejecutar nada. Para maximizar el uso de recursos en tu clúster, debes la memoria YARN y las CPU para que sea un múltiplo exacto de la cantidad necesaria Ejecutor de Spark. Puedes comprobar cuánta memoria reservó cada trabajador para YARN Para ello, verifica la propiedad yarn.nodemanager.resource.memory-mb en YARN.

Si usas Dataproc, la memoria disponible para YARN contenedores serán aproximadamente el 75% de la memoria de la VM. El tamaño mínimo del contenedor de YARN también se ajusta según el tamaño de las VMs de trabajador. Algunos trabajadores comunes y su configuración de YARN correspondiente se proporcionan en la siguiente tabla.

CPU de trabajador Memoria de trabajador (GB) Memoria de nodo YARN (GB) Memoria de asignación mínima de YARN (MB)
1 4 3 256
2 8 6 512
4 16 12 1024
8 32 24 1024
16 64 51 1024

Ten en cuenta que Spark solicita más memoria que la memoria del ejecutor para la canalización, y YARN redondea la cantidad solicitada. Para Por ejemplo, supongamos que configuraste la memoria del ejecutor en 2, 048 MB y no configuraste dado un valor para spark.yarn.executor.memoryOverhead, lo que significa que el valor de 384 MB. Esto significa que Spark solicita 2,048 MB + 384 MB. de cada ejecutor, que YARN redondea hacia arriba a un múltiplo exacto del una asignación mínima. Cuando se ejecuta en un nodo trabajador de 8 GB, debido a que el código YARN asignación mínima es de 512 MB, se redondea a 2.5 GB. Esta significa que cada trabajador puede ejecutar dos contenedores, con lo que se agotan CPU disponibles, pero dejando 1 GB de memoria YARN (6 GB - De 2.5 GB a 2.5 GB) sin usar. Esto significa que el nodo trabajador puede cuyo tamaño sea un poco menor, o a los ejecutores se les puede dar un poco más de memoria. Cuando se ejecuta en un nodo trabajador de 16 GB, se reducen 2,048 MB + 1,024 MB y se redondea a 3 GB, ya que la asignación mínima de YARN es de 1,024 MB. Esto significa que cada nodo trabajador puede ejecutar cuatro contenedores, con todas las CPUs. y la memoria YARN en uso.

Para contextualizar, la siguiente tabla muestra los tamaños de trabajadores recomendados según algunos tamaños de ejecutores comunes.

CPU del ejecutor Memoria del ejecutor (MB) CPU de trabajador Memoria de trabajador ( GB)
1 2,048 4 15
1 3072 4 21
1 4,096 4 26
2 8192 4 26

Por ejemplo, un nodo trabajador de 26 GB se traduce en 20 GB de memoria utilizables para ejecutar contenedores YARN. Con una memoria del ejecutor configurada en 4 GB, se reduce como sobrecarga, lo que significa contenedores YARN de 5 GB para cada ejecutor. Esta lo que significa que el trabajador puede ejecutar cuatro contenedores sin sobras de recursos adicionales. También puedes multiplicar el tamaño de los trabajadores. Por ejemplo, si la memoria del ejecutor está configurada en 4,096 GB, un trabajador con 8 CPU y 52 GB de memoria también funcionan bien. Las VMs de Compute Engine restringen la cantidad de memoria que puede tener según la cantidad de núcleos. Por ejemplo, una VM con 4 núcleos debe tener al menos 7.25 GB de memoria y un máximo de 26 GB de memoria Esto significa que un ejecutor Configurada para usar 1 CPU y 8 GB de memoria usa 2 CPU y 26 GB de memoria en la VM. Si los ejecutores están configurados para usar 2 CPU y 8 GB de memoria, se utilizan todas las CPU.

Disco

El disco es importante para algunas canalizaciones, pero no para todas. Si tu canalización No debe contener Shuffle, el disco solo se usará cuando Spark se quede sin memoria. y necesita volcar los datos al disco. Para estos tipos de canalizaciones, el tamaño del disco por lo general no tendrán un gran impacto en el rendimiento. Si el redistribuye muchos datos, el rendimiento del disco marcará la diferencia. Si que estás usando Dataproc, se recomienda que uses tamaños de disco de al menos 1 TB, a medida que el rendimiento del disco aumenta con su tamaño. Información sobre el rendimiento de los discos, consulta Configura discos empresariales y de seguridad.

Cantidad de trabajadores

Para minimizar el tiempo de ejecución, asegúrate de que tu clúster sea lo suficientemente grande como para ejecutarse tanto como pueda en paralelo. Por ejemplo, tu fuente de canalización lee datos con 100 divisiones, debes asegurarte de que sea lo suficientemente grande para ejecutar 100 ejecutores a la vez.

La forma más fácil de saber si tu clúster tiene un tamaño pequeño es observar el código memoria pendiente a lo largo del tiempo. Si estás usando Dataproc, un gráfico puede se encuentran en la página de detalles del clúster.

Si la memoria pendiente es alta durante períodos largos de tiempo, puedes aumentar la cantidad de trabajadores para agregar tanta capacidad adicional a tu clúster. En el ejemplo anterior, el aumento del clúster debería aumentar alrededor de 28 GB para garantizar que se alcance el nivel máximo de paralelismo.

Modo de flexibilidad mejorada (EFM)

EFM te permite especificar que solo participen los nodos trabajadores principales durante la redistribución de datos no estructurados. Dado que los trabajadores secundarios ya no son responsables del Shuffle intermedio cuando se quitan de un clúster, los trabajos de Spark no sufran demoras errores. Como nunca se reduce la escala verticalmente de los trabajadores principales, el clúster reduce su escala verticalmente con más estabilidad y eficiencia. Si ejecutas canalizaciones con Shuffle en un clúster estático, se recomienda que uses EFM.

Para obtener más información sobre EFM, consulta Modo de flexibilidad mejorada de Dataproc.