Выполнение более 32 одновременных задач в Apache Airflow - PullRequest
0 голосов
/ 05 декабря 2018

Я использую Apache Airflow 1.8.1.Я хотел бы запустить более 32 одновременных задач на моем экземпляре, но не могу заставить работать ни одну из конфигураций.

Я использую CeleryExecutor, конфигурация Airflow в пользовательском интерфейсе показывает 64 для parallelism и dag_concurrency и я несколько раз перезапускал планировщик Airflow, веб-сервер и работников (на самом деле я тестировал это локально на машине Vagrant, но также тестировал на экземпляре EC2).

airflow.cfg

# The amount of parallelism as a setting to the executor. This defines
# the max number of task instances that should run simultaneously
# on this airflow installation
parallelism = 64

# The number of task instances allowed to run concurrently by the scheduler
dag_concurrency = 64

Пример DAG.Я пробовал как с аргументом concurrency, так и без него непосредственно в DAG.

from datetime import datetime

from airflow import DAG
from airflow.operators.bash_operator import BashOperator

dag = DAG(
    'concurrency_dev',
    default_args={
        'owner': 'airflow',
        'depends_on_past': False,
        'start_date': datetime(2018, 1, 1),
    },
    schedule_interval=None,
    catchup=False
)

for i in range(0, 40):
    BashOperator(
        task_id='concurrency_dev_{i}'.format(i=i),
        bash_command='sleep 60',
        dag=dag
    )

Несмотря на это, одновременно выполнялось только 32 задачи.

enter image description here

1 Ответ

0 голосов
/ 12 декабря 2018

Если у вас 2 работника и celeryd_concurrency = 16, тогда вы ограничены 32 задачами.Если non_pooled_task_slot_count = 32, вы также будете ограничены.Конечно, значения parallelism и dag_concurrency должны быть выше 32 не только для веб-серверов и планировщиков, но и для рабочих.

...