Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Ajuste del desempeño de Apache Airflow en Amazon MWAA
En este tema se describe cómo ajustar el rendimiento de un entorno Amazon Managed Workflows for Apache Airflow mediante. Uso de las opciones de configuración de Apache Airflow en Amazon MWAA
Adición de una opción de configuración de Apache Airflow
Utilice el siguiente procedimiento para añadir una opción de configuración de Airflow a su entorno.
-
Abra la página Entornos en la consola de Amazon MWAA.
-
Seleccione un entorno.
-
Elija Editar.
-
Elija Siguiente.
-
Seleccione Agregar configuración personalizada en el panel Opciones de configuración de Airflow.
-
En la lista desplegable, elija una opción de configuración e introduzca un valor. También puede escribir una configuración personalizada e introducir un valor.
-
Seleccione Agregar configuración personalizada para cada configuración que desee agregar.
-
Seleccione Save.
Para obtener más información, consulte. Uso de las opciones de configuración de Apache Airflow en Amazon MWAA
Programador de Apache Airflow
El programador de Apache Airflow es un componente básico de Apache Airflow. Un problema con el programador puede DAGs impedir que se analicen y que las tareas se programen. Para obtener más información sobre el ajuste del programador de Apache Airflow, consulte Cómo ajustar el rendimiento del programador en el sitio web de documentación de Apache Airflow.
Parámetros
En esta sección se describen las opciones de configuración disponibles para el programador de Apache Airflow (Apache Airflow v2 y versiones posteriores) y sus casos de uso.
- Apache Airflow v3
-
Configuración |
Caso de uso |
celery.sync_parallelism
Cantidad de procesos que utiliza el ejecutor Celery para sincronizar el estado de las tareas.
Valor predeterminado: 1
|
Esta opción puede utilizarse para evitar conflictos en las colas ya que limita los procesos que utiliza el ejecutor Celery. De forma predeterminada, se establece un valor para evitar errores 1 al enviar los registros de tareas a Logs. CloudWatch Si se emplea el valor 0 , se estará utilizando la cantidad máxima de procesos, lo que podría provocar errores al entregar los registros de tareas.
|
scheduler.scheduler_idle_sleep_time
El número de segundos que se deben esperar entre el procesamiento consecutivo de un archivo DAG en el «bucle» del programador.
Valor predeterminado: 1
|
Puede utilizar esta opción para reducir el consumo de CPU del programador aumentando el tiempo de inactividad del programador una vez que haya terminado de recuperar los resultados del análisis del DAG, buscar y poner en cola las tareas y ejecutar las tareas en cola en el Ejecutor. Al aumentar este valor, se consume la cantidad de subprocesos del programador que se ejecutan en un entorno dag_processor.parsing_processes para Apache Airflow v2 y Apache Airflow v3. Esto podría reducir la capacidad de análisis DAGs de los programadores y aumentar el tiempo que tardan en rellenarse en el servidor web. DAGs
|
scheduler.max_dagruns_to_create_per_loop
El número máximo que se debe DAGs crear DagRunspor «bucle» del programador.
Valor predeterminado: 10
|
Puede usar esta opción para liberar recursos para programar tareas reduciendo el número máximo del DagRuns«bucle» del planificador.
|
dag_processor.parsing_processes
El número de subprocesos que el programador puede ejecutar en paralelo para programar DAGs.
Predeterminado: usar (2 * number of vCPUs) - 1
|
Puede usar esta opción para liberar recursos reduciendo el número de procesos que el programador ejecuta en paralelo para DAGs analizarlos. Recomendamos utilizar una cantidad baja si el análisis de los DAG afecta a la programación de tareas. Debe especificar un valor inferior al recuento de la CPU virtual (vCPU) de su entorno. Para obtener más información, consulta Límites.
|
- Apache Airflow v2
-
Configuración |
Caso de uso |
celery.sync_parallelism
Cantidad de procesos que utiliza el ejecutor Celery para sincronizar el estado de las tareas.
Valor predeterminado: 1
|
Esta opción puede utilizarse para evitar conflictos en las colas ya que limita los procesos que utiliza el ejecutor Celery. De forma predeterminada, se establece un valor para evitar errores 1 al enviar los registros de tareas a CloudWatch los registros. Si se emplea el valor 0 , se estará utilizando la cantidad máxima de procesos, lo que podría provocar errores al entregar los registros de tareas.
|
scheduler.idle_sleep_time
El número de segundos que deben transcurrir entre el procesamiento consecutivo del archivo DAG en el «bucle» del programador.
Valor predeterminado: 1
|
Puede utilizar esta opción para reducir el consumo de CPU del programador aumentando el tiempo de inactividad del programador una vez que haya terminado de recuperar los resultados del análisis del DAG, buscar y poner en cola las tareas y ejecutar las tareas en cola en el Ejecutor. Al aumentar este valor, se consume la cantidad de subprocesos del programador que se ejecutan en un entorno scheduler.parsing_processes para Apache Airflow v2 y Apache Airflow v3. Esto podría reducir la capacidad de análisis DAGs de los programadores y aumentar el tiempo que tardan en rellenarse en el servidor web. DAGs
|
scheduler.max_dagruns_to_create_per_loop
El número máximo que se debe DAGs crear DagRunspor «bucle» del programador.
Valor predeterminado: 10
|
Puede usar esta opción para liberar recursos para programar tareas reduciendo el número máximo del DagRuns«bucle» del planificador.
|
scheduler.parsing_processes
El número de subprocesos que el programador puede ejecutar en paralelo para programar DAGs.
Predeterminado: usar (2 * number of vCPUs) - 1
|
Puede usar esta opción para liberar recursos reduciendo el número de procesos que el programador ejecuta en paralelo para DAGs analizarlos. Recomendamos utilizar una cantidad baja si el análisis de los DAG afecta a la programación de tareas. Debe especificar un valor inferior al recuento de la CPU virtual (vCPU) de su entorno. Para obtener más información, consulta Límites.
|
Límites
En esta sección se describen los límites que se deben tener en cuenta al ajustar los parámetros predeterminados del programador.
- scheduler.parsing_processes, scheduler.max_threads (solo en la versión 2)
-
Se permiten dos hilos por vCPU en cada clase de entorno. Reserve al menos un hilo para el programador en cada clase de entorno. Si observa un retraso en la programación de las tareas, es posible que necesite aumentar la clase de su entorno. Por ejemplo, un entorno grande tendrá una instancia de contenedor de Fargate de 4 vCPU para el programador. Esto significa que hay un máximo de 7
hilos disponibles en total para que los utilicen otros procesos. Es decir, dos subprocesos multiplicados por cuatro vCPUs, menos uno para el propio programador. El valor que especifique scheduler.max_threads
(solo en la versión 2) y no scheduler.parsing_processes
debe superar el número de subprocesos disponibles para una clase de entorno, tal como se indica:
-
mw1.small: no debe destinarse más de 1
hilo al resto de procesos. El hilo restante está reservado para el programador.
-
mw1.medium: no deben destinarse más de 3
hilos al resto de procesos. El hilo restante está reservado para el programador.
-
mw1.large: no deben destinarse más de 7
hilos al resto de procesos. El hilo restante está reservado para el programador.
Carpetas de los DAG
El programador de Apache Airflow escanea continuamente la DAGs carpeta de su entorno. en busca de cualquier archivo que contenga plugins.zip
, o cualquier archivo Python (.py
) que contenga en sus instrucciones de importación la palabra “airflow”. A continuación, todos los objetos DAG de Python resultantes se colocan en un archivo DagBagpara que el planificador los procese y determine qué tareas, si las hay, deben programarse. El análisis de los archivos DAG se realiza independientemente de si los archivos contienen objetos DAG viables o no.
Parámetros
En esta sección se describen las opciones de configuración disponibles para la DAGs carpeta (Apache Airflow v2 y versiones posteriores) y sus casos de uso.
- Apache Airflow v3
-
Configuración |
Caso de uso |
dag_processor.refresh_interval
El número de segundos que debe escanearse la carpeta en busca de nuevos archivos DAGs .
Predeterminado: 300 segundos
|
Puede usar esta opción para liberar recursos aumentando el número de segundos para analizar la DAGs carpeta. Se recomienda aumentar este valor si los tiempos de análisis son prolongadostotal_parse_time metrics , lo que puede deberse a la gran cantidad de archivos de la DAGs carpeta.
|
dag_processor.min_file_process_interval
Cantidad de segundos que transcurren desde que el programador analiza un DAG hasta que se reflejan las actualizaciones del mismo.
Predeterminado: 30 segundos
|
Esta opción puede utilizarse para liberar recursos aumentando la cantidad de segundos que el programador espera antes de analizar un DAG. Por ejemplo, si especifica un valor de 30 , el archivo DAG se analizará cada 30 segundos. Recomendamos mantener elevado dicho valor para reducir el uso de la CPU en su entorno.
|
- Apache Airflow v2
-
Configuración |
Caso de uso |
scheduler.dag_dir_list_interval
El número de segundos que debe escanearse la DAGs carpeta en busca de nuevos archivos.
Predeterminado: 300 segundos
|
Puede usar esta opción para liberar recursos aumentando el número de segundos para analizar la DAGs carpeta. Se recomienda aumentar este valor si los tiempos de análisis son prolongadostotal_parse_time metrics , lo que puede deberse a la gran cantidad de archivos de la DAGs carpeta.
|
scheduler.min_file_process_interval
Cantidad de segundos que transcurren desde que el programador analiza un DAG hasta que se reflejan las actualizaciones del mismo.
Predeterminado: 30 segundos
|
Esta opción puede utilizarse para liberar recursos aumentando la cantidad de segundos que el programador espera antes de analizar un DAG. Por ejemplo, si especifica un valor de 30 , el archivo DAG se analizará cada 30 segundos. Recomendamos mantener elevado dicho valor para reducir el uso de la CPU en su entorno.
|
Archivos DAG
Como parte del bucle del programador de Apache Airflow, los archivos DAG individuales se analizan para extraer los objetos DAG en Python. En Apache Airflow v2 y versiones posteriores, el programador analiza un número máximo de procesos de análisis al mismo tiempo. El número de segundos especificado en scheduler.min_file_process_interval
(v2) o dag_processor.min_file_process_interval
(v3) debe transcurrir antes de que se vuelva a analizar el mismo archivo.
Parámetros
En esta sección se describen las opciones de configuración disponibles para los archivos DAG de Apache Airflow (Apache Airflow v2 y versiones posteriores) y sus casos de uso.
- Apache Airflow v3
-
Configuración |
Caso de uso |
dag_processor.dag_file_processor_timeout
Número de segundos antes de que se agote el tiempo de espera para procesar un archivo DAG. DagFileProcessor
Predeterminado: 50 segundos
|
Puede utilizar esta opción para liberar recursos aumentando el tiempo que tarda en agotarse el DagFileProcessortiempo de espera. Se recomienda aumentar este valor si se producen tiempos de espera en los registros de procesamiento del DAG que impidan cargarlos de forma viable DAGs .
|
core.dagbag_import_timeout
Cantidad segundos que transcurren antes de que se interrumpe la importación de un archivo en Python.
Predeterminado: 30 segundos
|
Puede utilizar esta opción para liberar recursos aumentando el tiempo que tarda el programador en espera al importar un archivo de Python para extraer los objetos del DAG. Esta opción se procesa como parte del «bucle» del planificador y debe contener un valor inferior al valor especificado en. dag_processor.dag_file_processor_timeout
|
core.min_serialized_dag_update_interval
El número mínimo de segundos tras los que se actualizan los serializados DAGs en la base de datos.
Predeterminado: 30
|
Puede utilizar esta opción para liberar recursos aumentando el número de segundos tras los que se actualizan los serializados DAGs en la base de datos. Le recomendamos que aumente este valor si tiene un número grande de DAGs ellos o si es complejo DAGs. Si se aumenta este valor, se reduce la carga del programador y de la base de datos a medida que DAGs se serializan.
|
core.min_serialized_dag_fetch_interval
El número de segundos en que se recupera un DAG serializado de la base de datos cuando ya está cargado en la. DagBag
Valor predeterminado: 10
|
Esta opción puede utilizarse para liberar recursos aumentando la cantidad de segundos que se tarda en volver a extraer un DAG serializado. El valor debe ser mayor que el valor especificado en core.min_serialized_dag_update_interval para reducir las tasas de «escritura» de la base de datos. Al aumentar este valor, se reduce la carga en el servidor web y la base de datos a medida que DAGs se serializan.
|
- Apache Airflow v2
-
Configuración |
Caso de uso |
core.dag_file_processor_timeout
El número de segundos antes de que se agote el DagFileProcessortiempo de espera para procesar un archivo DAG.
Predeterminado: 50 segundos
|
Puede utilizar esta opción para liberar recursos aumentando el tiempo que tarda en agotarse el DagFileProcessortiempo de espera. Se recomienda aumentar este valor si se producen tiempos de espera en los registros de procesamiento del DAG que impidan cargarlos de forma viable DAGs .
|
core.dagbag_import_timeout
Cantidad segundos que transcurren antes de que se interrumpe la importación de un archivo en Python.
Predeterminado: 30 segundos
|
Puede utilizar esta opción para liberar recursos aumentando el tiempo que tarda el programador en espera al importar un archivo de Python para extraer los objetos del DAG. Esta opción se procesa como parte del «bucle» del planificador y debe contener un valor inferior al valor especificado en. core.dag_file_processor_timeout
|
core.min_serialized_dag_update_interval
El número mínimo de segundos tras los que se actualizan los serializados DAGs en la base de datos.
Predeterminado: 30
|
Puede utilizar esta opción para liberar recursos aumentando el número de segundos tras los que se actualizan los serializados DAGs en la base de datos. Le recomendamos que aumente este valor si tiene un número grande de DAGs ellos o si es complejo DAGs. Si se aumenta este valor, se reduce la carga del programador y de la base de datos a medida que DAGs se serializan.
|
core.min_serialized_dag_fetch_interval
El número de segundos en que se recupera un DAG serializado de la base de datos cuando ya está cargado en la. DagBag
Valor predeterminado: 10
|
Esta opción puede utilizarse para liberar recursos aumentando la cantidad de segundos que se tarda en volver a extraer un DAG serializado. El valor debe ser mayor que el valor especificado en core.min_serialized_dag_update_interval para reducir las tasas de «escritura» de la base de datos. Al aumentar este valor, se reduce la carga en el servidor web y la base de datos a medida que DAGs se serializan.
|
Tareas
Tanto el programador como los procesos de trabajo de Apache Airflow intervienen en la puesta de tareas en la cola y en su retirada de la misma. El programador toma las tareas analizadas que ya están a punto para ser programadas y modifica su estado de Ninguno a Programado. El ejecutor, que también se ejecuta en el contenedor del programador de Fargate, pone esas tareas en cola y cambia su estado a En cola. Cuando los procesos de trabajo tengan capacidad para ello, tomarán la tarea de la cola y cambiarán su estado a En ejecución, que posteriormente cambiará a Correcto o Error en función de si se ha logrado llevar a cabo la tarea correctamente o si algo ha fallado.
Parámetros
En esta sección se describen las opciones de configuración disponibles para las tareas de Apache Airflow y sus casos de uso.
Las opciones de configuración predeterminadas que Amazon MWAA anula están marcadas. red
- Apache Airflow v3
-
Configuración |
Caso de uso |
core.parallelism
El número máximo de instancias de tareas que pueden tener un estado. Running
Predeterminado: se establece dinámicamente en función de(maxWorkers * maxCeleryWorkers) / schedulers * 1.5 .
|
Esta opción puede utilizarse para liberar recursos aumentando la cantidad de instancias de tareas que se pueden ejecutar simultáneamente. El valor especificado debe ser el número de trabajadores disponibles multiplicado por la densidad de tareas de los trabajadores. Te recomendamos que cambies este valor solo cuando tengas un gran número de tareas bloqueadas en el estado «En ejecución» o «En cola».
|
core.execute_tasks_new_python_interpreter
Determina si Apache Airflow ejecuta tareas mediante la bifurcación del proceso principal o la creación de un nuevo proceso de Python.
Valor predeterminado: True
|
Cuando este parámetro esté establecido en True , Apache Airflow reconocerá los cambios que realice en sus complementos como un nuevo proceso en Python creado para ejecutar tareas.
|
celery.worker_concurrency
Amazon MWAA anula la instalación base de Airflow para esta opción para escalar los trabajadores como parte de su componente de escalado automático.
Predeterminado: no aplicable
|
Any value specified for this option is ignored.
|
celery.worker_autoscale
La simultaneidad de tareas para los trabajadores.
Valores predeterminados:
mw1.micro - 3,0 mw1.small: 5,0 mw1.medium: 10,0 mw1.large: 20,0 mw1.xlarge: 40,0 mw1.2xlarge: 80,0
|
Puede utilizar esta opción para liberar recursos al reducir la simultaneidad de minimum tareas de los maximum trabajadores. Los trabajadores aceptan hasta las tareas maximum simultáneas configuradas, independientemente de si hay recursos suficientes para realizarlas. Si las tareas se programan sin que haya recursos suficientes, se producirá un error de inmediato. Recomendamos cambiar este valor en el caso de que las tareas consuman muchos recursos; reduzca los valores por debajo de los valores predeterminados para que haya una mayor capacidad por tarea.
|
- Apache Airflow v2
-
Configuración |
Caso de uso |
core.parallelism
El número máximo de instancias de tareas que pueden tener un Running estado.
Predeterminado: se establece dinámicamente en función de(maxWorkers * maxCeleryWorkers) / schedulers * 1.5 .
|
Esta opción puede utilizarse para liberar recursos aumentando la cantidad de instancias de tareas que se pueden ejecutar simultáneamente. El valor especificado debe ser el número de trabajadores disponibles multiplicado por la densidad de tareas de los trabajadores. Te recomendamos que cambies este valor solo cuando tengas un gran número de tareas bloqueadas en el estado «En ejecución» o «En cola».
|
core.dag_concurrency
Cantidad de instancias de tareas que se pueden ejecutar simultáneamente para cada DAG.
Predeterminado: 10000
|
Esta opción puede utilizarse para liberar recursos aumentando la cantidad de instancias de tareas que pueden ejecutarse simultáneamente. Por ejemplo, si tiene cien tareas paralelas DAGs con diez y quiere que todas DAGs se ejecuten simultáneamente, puede calcular el paralelismo máximo como el número de trabajadores disponibles multiplicado por la densidad de tareas de los trabajadores dividido por el celery.worker_concurrency número de. DAGs
|
core.execute_tasks_new_python_interpreter
Determina si Apache Airflow ejecuta tareas mediante la bifurcación del proceso principal o la creación de un nuevo proceso de Python.
Valor predeterminado: True
|
Cuando este parámetro esté establecido en True , Apache Airflow reconocerá los cambios que realice en sus complementos como un nuevo proceso en Python creado para ejecutar tareas.
|
celery.worker_concurrency
Amazon MWAA anula la instalación base de Airflow para esta opción para escalar los trabajadores como parte de su componente de escalado automático.
Predeterminado: no aplicable
|
Any value specified for this option is ignored.
|
celery.worker_autoscale
La simultaneidad de tareas para los trabajadores.
Valores predeterminados:
mw1.micro - 3,0 mw1.small: 5,0 mw1.medium: 10,0 mw1.large: 20,0 mw1.xlarge: 40,0 mw1.2xlarge: 80,0
|
Puede utilizar esta opción para liberar recursos al reducir la simultaneidad de minimum tareas de los maximum trabajadores. Los trabajadores aceptan hasta las tareas maximum simultáneas configuradas, independientemente de si hay recursos suficientes para realizarlas. Si las tareas se programan sin que haya recursos suficientes, se producirá un error de inmediato. Recomendamos cambiar este valor en el caso de que las tareas consuman muchos recursos; reduzca los valores por debajo de los valores predeterminados para que haya una mayor capacidad por tarea.
|