Compartir a través de


Escalabilidad automática de grupos de Apache Spark de Azure Synapse Analytics

La característica de escalabilidad automática de grupos de Apache Spark para Azure Synapse Analytics escala y reduce verticalmente de forma automática el número de nodos de una instancia de clúster. 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 la 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. El uso de esta característica no tiene un cargo adicional.

Supervisión de métricas

La escalabilidad automática supervisa continuamente la instancia de Spark y recopila las métricas siguientes:

Métrica Descripción
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 nodos 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. La escalabilidad automática toma decisiones de escalar o reducir verticalmente según estas métricas.

Condiciones de escalado basado en la carga

Cuando se detectan las condiciones siguientes, Escalabilidad automática emite 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 la escalabilidad vertical, el servicio de escalabilidad automática de Azure Synapse calcula cuántos nodos nuevos se necesitan para cumplir con los requisitos actuales de CPU y memoria y, luego, emite una solicitud de escalabilidad vertical para agregar el número de nodos necesario.

Para la reducción vertical, en función del número de ejecutores, los patrones de aplicación por nodo, la CPU actual y los requisitos de memoria, la escalabilidad automática emite una solicitud para quitar un número determinado de nodos. El servicio detecta también qué nodos son candidatos para la eliminación en función de la ejecución del trabajo actual. 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.

Introducción

Creación de un grupo de Apache Spark sin servidor con la escalabilidad automática

Para habilitar la característica de escalabilidad automática, complete estos pasos como parte del proceso de creación de grupos normal:

  1. En la pestaña Datos básicos, marque la casilla Habilitar escalabilidad automática.

  2. 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.

También puede habilitar la asignación dinámica de ejecutores en escenarios donde los requisitos del ejecutor sean muy diferentes en las fases de un trabajo de Spark o el volumen de datos procesados fluctúe con el tiempo. Habilitando 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 permite configurar la asignación dinámica de ejecutores mediante el código que se muestra a continuación:

    %%configure -f
    {
        "conf" : {
            "spark.dynamicAllocation.maxExecutors" : "6",
            "spark.dynamicAllocation.enabled": "true",
            "spark.dynamicAllocation.minExecutors": "2"
     }
    }

Los valores predeterminados que se especifican a través del código invalidan los valores establecidos a través de la interfaz de usuario.

En este ejemplo, si su trabajo solo requiere dos ejecutores, solo usará dos ejecutores. Cuando el trabajo requiera más, se ampliará a seis ejecutores (un controlador y seis ejecutores). Cuando el trabajo no necesite los ejecutores, los retirará. Si no necesita el nodo, lo liberará.

Nota

maxExecutors reservará el número de ejecutores configurados. Teniendo en cuenta el ejemplo, incluso si usa solo dos, se reservará seis.

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. De este modo, se garantiza que el aprovisionamiento de ejecutores de acuerdo con las necesidades del trabajo que se ejecute.

Procedimientos recomendados

Consideración de la latencia de las operaciones de escalado o reducción verticales

Una operación de escalabilidad puede tardar entre 1 y 5 minutos en completarse.

Preparación para la reducción vertical

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 vertical menos agresiva, esta configuración se puede establecer en false.

Pasos siguientes

Guía de inicio rápido para configurar un nuevo grupo de Spark Creación de un grupo de Spark