Los trabajos de ETL de AWS Glue Streaming consumen continuamente datos de los orígenes de streaming, limpian y transforman los datos durante el proceso y los ponen a disposición para su análisis. Al supervisar cada etapa de la ejecución del trabajo, el escalado automático de AWS Glue puede desconectar a los trabajadores cuando están inactivos o agregar trabajadores si es posible un procesamiento paralelo adicional.
En las siguientes secciones, se ofrece información acerca del escalado automático de la transmisión de AWS Glue.
Habilitar Auto Scaling en AWS Glue Studio
En la página Job details (Detalles del trabajo) en AWS Glue Studio, elija el tipo como Spark o Spark Streaming y Glue version (Versión de Glue) como Glue 3.0
o Glue 4.0
. A continuación, se mostrará una casilla de verificación debajo de Worker type (Tipo de empleado).
-
Seleccione la opción Automatically scale the number of workers (Escalar automáticamente el número de empleados).
-
Establezca el Maximum number of workers (Número máximo de empleados) para definir el número máximo de empleados que se pueden asignar a la ejecución de trabajos.

Habilitación de Auto Scaling con AWS CLI o SDK
Para habilitar Auto Scaling desde la AWS CLI para la ejecución de un trabajo, ejecute start-job-run
con la siguiente configuración:
{
"JobName": "<your job name>",
"Arguments": {
"--enable-auto-scaling": "true"
},
"WorkerType": "G.2X", // G.1X and G.2X are allowed for Auto Scaling Jobs
"NumberOfWorkers": 20, // represents Maximum number of workers
...other job run configurations...
}
Una vez que haya finalizado la ejecución de un trabajo de ETL, también puede llamar a get-job-run
para comprobar el uso real de recursos de la ejecución del trabajo en segundos de DPU. Nota: El nuevo campo DPUSeconds solo se mostrará para los trabajos por lotes en AWS Glue 3.0 o posterior con el escalado automático habilitado. Este campo no es compatible con trabajos de streaming.
$ aws glue get-job-run --job-name your-job-name --run-id jr_xx --endpoint https://glue.us-east-1.amazonaws.com --region us-east-1
{
"JobRun": {
...
"GlueVersion": "3.0",
"DPUSeconds": 386.0
}
}
También se pueden configurar ejecuciones de trabajos con Auto Scaling mediante el AWS Glue SDK con la misma configuración.
Funcionamiento
Escalado entre microlotes
El siguiente ejemplo se usa para describir cómo funciona el escalado automático.
-
Tiene un trabajo de AWS Glue que comienza con 50 DPU.
-
El escalado automático está habilitado.
En este ejemplo, AWS Glue analiza la métrica “batchProcessingTimeInMs” de algunos microlotes y determina si los trabajos se están completando dentro del tamaño de ventana que ha establecido. Si sus trabajos se completan antes y en función de la rapidez con la que se terminen, es posible que AWS Glue se reduzca verticalmente. Esta métrica, trazada con “numberAllExecutors”, se puede supervisar en Amazon CloudWatch para ver cómo funciona el escalado automático.
El número de ejecutores se escala o reduce verticalmente de manera exponencial solo después de que se complete cada microlote. Como puede ver en el registro de supervisión de Amazon CloudWatch, AWS Glue analiza la cantidad de ejecutores necesarios (línea naranja) y escala los ejecutores (línea azul) para que coincidan automáticamente con esa cantidad.

Una vez que AWS Glue reduzca verticalmente el número de ejecutores y observe que los volúmenes de datos aumentan y, en consecuencia, aumenta el tiempo de procesamiento de los microlotes, AWS Glue escalará verticalmente hasta los 50 DPU, que es el límite máximo especificado.
Escalado dentro de microlotes
En el ejemplo anterior, el sistema supervisa algunos microlotes completados para tomar una decisión acerca de si escalarlos o reducirlos verticalmente. Las ventanas más largas requieren un escalado automático para responder de manera más rápida dentro del microlote en vez de esperar unos pocos microlotes. En estos casos, puede usar la configuración adicional --auto-scaIe-within-microbatch
como true
. Puede agregarla a las propiedades del trabajo de AWS Glue en AWS Glue Studio como se muestra a continuación.
