Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La característica de escalabilidad automática del grupo de Apache Spark para Azure Synapse Analytics escala automáticamente el número de nodos de una instancia de clúster hacia arriba y hacia abajo. Durante la creación de un nuevo grupo de Apache Spark para Azure Synapse Analytics, se puede establecer un número mínimo y máximo de nodos, hasta 200 nodos, cuando se selecciona Escalabilidad automática. La escalabilidad automática luego supervisa los requisitos de recursos de la carga y escala o reduce verticalmente el número de nodos. No se aplica ningún cargo por esta característica.
Supervisión de métricas
La escalabilidad automática supervisa continuamente la instancia de Spark y recopila las métricas siguientes:
| Métrica | Description |
|---|---|
| Total de CPU pendiente | Número total de núcleos necesarios para iniciar la ejecución de todos los trabajos pendientes. |
| Total de memoria pendiente | Memoria total (en MB) necesaria para iniciar la ejecución de todos los trabajos pendientes. |
| Total de CPU libre | La suma de todos los núcleos sin usar en los nodos activos. |
| Total de memoria libre | La suma de la memoria sin usar (en MB) en los nodos activos. |
| Memoria usada por nodo | Carga en un nodo. Un nodo donde se usan 10 GB de memoria se considera bajo más carga que un trabajo con 2 GB de memoria usada. |
Las métricas anteriores se comprueban cada 30 segundos. El escalado automático toma decisiones de aumento y reducción de escala en función de estas métricas.
Condiciones de escalado basadas en la carga
Cuando se detectan las condiciones siguientes, el escalado automático emitirá una solicitud de escalado:
| Escalabilidad vertical | Reducción vertical |
|---|---|
| El total de CPU pendiente es mayor que el total de CPU libre durante más de 1 minuto. | El total de CPU pendiente es menor que el total de CPU libre durante más de 2 minutos. |
| El total de memoria pendiente es mayor que el total de memoria libre durante más de 1 minuto. | El total de memoria pendiente es menor que el total de memoria libre durante más de 2 minutos. |
Para el escalado vertical, el servicio Escalado automático de Azure Synapse calcula cuántos nodos nuevos se necesitan para cumplir los requisitos actuales de CPU y memoria y, a continuación, emite una solicitud de escalado vertical para agregar el número necesario de nodos.
Para la reducción de escala, basada en el número de ejecutores, los maestros de aplicación por nodo, la CPU actual y los requisitos de memoria, el escalado automático emite una solicitud para quitar algunos nodos. El servicio también detecta qué nodos son candidatos para la eliminación en función de la ejecución actual del trabajo. En primer lugar, la operación de reducción vertical retira los nodos y, luego, los quita del clúster.
Nota:
Nota sobre cómo actualizar y forzar la aplicación de la configuración de escalabilidad automática a un grupo de Spark existente. Si se habilita Forzar una nueva configuración en Azure Portal o ForceApplySetting en PowerShell, todas las sesiones de Spark existentes finalizan y los cambios de configuración se aplican inmediatamente. Si esta opción no está seleccionada, la configuración se aplica a las nuevas sesiones de Spark y las sesiones existentes no finalizan.
Comienza
Creación de un grupo de Apache Spark sin servidor con escalado automático
Para habilitar la característica de escalabilidad automática, complete estos pasos como parte del proceso de creación de grupos normal:
En la pestaña Datos básicos, marque la casilla Habilitar escalabilidad automática.
Escriba los valores deseados para estas propiedades:
- Número mínimo de nodos.
- Número máximo de nodos.
El número inicial de nodos será el mínimo. Este valor define el tamaño inicial de la instancia durante su creación. El número mínimo de nodos no puede ser inferior a tres.
Opcionalmente, puede habilitar la asignación dinámica de ejecutores en escenarios en los que los requisitos del ejecutor son muy diferentes en las fases de un trabajo de Spark o el volumen de datos procesados fluctúa con el tiempo. Al habilitar la asignación dinámica de ejecutores, podemos usar la capacidad según sea necesario.
Al habilitar la asignación dinámica, permite que el trabajo escale el número de ejecutores en el número mínimo y máximo de ejecutores especificados.
Apache Spark habilita la configuración de asignación dinámica de ejecutores mediante código como se indica a continuación:
%%configure -f
{
"conf" : {
"spark.dynamicAllocation.maxExecutors" : "6",
"spark.dynamicAllocation.enabled": "true",
"spark.dynamicAllocation.minExecutors": "2"
}
}
Los valores predeterminados especificados a través del código invalidan los valores establecidos a través de la interfaz de usuario.
En este ejemplo, si el trabajo solo requiere dos ejecutores, solo usa dos ejecutores. Cuando el trabajo requiera más, se escalará verticalmente hasta seis ejecutores (un controlador, seis ejecutores). Cuando el trabajo no necesite los ejecutores, estos serán desmantelados. Si no necesita el nodo, liberará el nodo.
Nota:
MaxExecutors reservará el número de ejecutores configurados. Teniendo en cuenta el ejemplo, aunque solo uses 2, se reservarán 6.
Por tanto, al habilitar la asignación dinámica, el número de ejecutores se ampliará o reducirá en función del uso que se haga de ellos. Esto garantiza que los ejecutores se aprovisionan de acuerdo con las necesidades de ejecución del trabajo.
procedimientos recomendados
Consideración de la latencia de las operaciones de escalado o reducción verticales
Una operación de escalado puede tardar entre 1 y 5 minutos en completarse.
Prepararse para reducir escala
Durante el proceso de reducción vertical de instancias, la escalabilidad automática pondrá los nodos en estado de retirada para que no se puedan iniciar nuevos ejecutores en ese nodo.
Los trabajos en ejecución se seguirán ejecutando y se completarán. Los trabajos pendientes esperarán ser programados como normales con menos nodos disponibles.
Nota:
De forma predeterminada, spark.yarn.executor.decommission.enabled se establece en true, lo que permite el apagado automático de nodos infrautilizados para optimizar la eficacia del proceso. Si se prefiere una reducción menos agresiva, esta configuración se puede establecer en false.
Pasos siguientes
Inicio rápido para configurar un nuevo grupo de Spark: Creación de un grupo de Spark