Saltar al contenido

Paralelismo del flujo de aire

Puede que se de el caso de que encuentres algún error con tu código o proyecto, recuerda probar siempre en un entorno de testing antes subir el código al trabajo final.

Solución:

paralelismo: no es un nombre muy descriptivo. La descripción dice que establece las instancias máximas de tareas para la instalación de Airflow, lo cual es un poco ambiguo: si tengo dos hosts que ejecutan trabajadores de Airflow, tendría Airflow instalado en dos hosts, por lo que deberían ser dos instalaciones, pero según el contexto. ‘por instalación’ aquí significa ‘por base de datos de estado de Airflow’. Llamaría a esto max_active_tasks.

dag_concurrencia: A pesar del nombre basado en el comentario, esta es en realidad la concurrencia de tareas, y es por trabajador. Llamaría a esto max_active_tasks_for_worker (per_worker sugeriría que es una configuración global para trabajadores, pero creo que puede tener trabajadores con diferentes valores establecidos para esto).

max_active_runs_per_dag: Este está un poco bien, pero dado que parece ser solo un valor predeterminado para el DAG kwarg coincidente, sería bueno reflejarlo en el nombre, algo como default_max_active_runs_for_dags Así que pasemos a los DAG kwargs:

simultaneidad: Nuevamente, tener un nombre general como este, junto con el hecho de que la concurrencia se usa para algo diferente en otros lugares, hace que esto sea bastante confuso. Llamaría a esto max_active_tasks.

max_active_runs: Este suena bien para mí.

fuente: https://issues.apache.org/jira/browse/AIRFLOW-57


max_threads le da al usuario cierto control sobre el uso de la CPU. Especifica el paralelismo del planificador.

el programador max_threads es el número de procesos para paralelizar el planificador. Él max_threads no puede exceder el número de CPU. El Ejecutor Local parallelism es el número de tareas simultáneas que debe ejecutar LocalExecutor. Tanto el programador como LocalExecutor utilizan la biblioteca de multiprocesamiento de Python para el paralelismo.

Es 2019 y han aparecido más documentos actualizados. En breve:

AIRFLOW__CORE__PARALLELISM es la cantidad máxima de instancias de tareas que pueden ejecutarse simultáneamente en TODO Airflow (todas las tareas en todos los dags)

AIRFLOW__CORE__DAG_CONCURRENCY es el número máximo de instancias de tareas que se pueden ejecutar simultáneamente PARA UN ÚNICO DAG ESPECÍFICO

Estos documentos lo describen con más detalle:

Según https://www.astronomer.io/guides/airflow-scaling-workers/:

el paralelismo es el número máximo de instancias de tareas que pueden ejecutarse simultáneamente en el flujo de aire. Esto significa que, en todos los DAG en ejecución, no se ejecutarán más de 32 tareas a la vez.

Y

dag_concurrency es la cantidad de instancias de tareas que se pueden ejecutar simultáneamente dentro de un dag específico. En otras palabras, podría tener 2 DAG que ejecutan 16 tareas cada uno en paralelo, pero un solo DAG con 50 tareas también solo ejecutaría 16 tareas, no 32.

Y, según https://airflow.apache.org/faq.html#how-to-reduce-airflow-dag-scheduling-latency-in-production:

max_threads: el programador generará múltiples subprocesos en paralelo para programar dags. Esto está controlado por max_threads con un valor predeterminado de 2. El usuario debe aumentar este valor a un valor mayor (por ejemplo, el número de CPU donde se ejecuta el programador – 1) en producción.

Pero parece que esta última pieza no debería tomar demasiado tiempo, porque es solo la parte de “programación”. No es la porción actual de ejecución. Por lo tanto, no vimos la necesidad de modificar max_threads mucho, pero AIRFLOW__CORE__PARALLELISM y AIRFLOW__CORE__DAG_CONCURRENCY nos afectó.

Comentarios y puntuaciones

Si guardas alguna duda y forma de prosperar nuestro tutorial eres capaz de ejecutar una aclaración y con gusto lo interpretaremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *