在Apache Airflow中运行并行任务

时间:2018-05-04 22:50:37

标签: airflow

我可以配置airflow.cfg文件来一个接一个地运行任务。

我想要做的是,并行执行任务,例如每次2个并到达列表的末尾。

我该如何配置?

2 个答案:

答案 0 :(得分:8)

并行执行Airflow中的任务取决于您使用的执行程序,例如SequentialExecutorLocalExecutorCeleryExecutor等。

对于简单的设置,只需将执行程序设置为airflow.cfg中的LocalExecutor即可实现并行性:

[core]
executor = LocalExecutor

参考:https://github.com/apache/incubator-airflow/blob/29ae02a070132543ac92706d74d9a5dc676053d9/airflow/config_templates/default_airflow.cfg#L76

这将为每项任务启动一个单独的流程。

(当然,你需要一个DAG,其中至少有两个任务可以并行执行,看它是否有效。)

或者,使用CeleryExecutor,您可以通过运行(根据需要多次)启动任意数量的工作人员:

$ airflow worker

任务将进入Celery队列,每个Celery工作人员都将退出队列。

您可能会在Airflow配置文档中找到使用Celery扩展部分。

https://airflow.apache.org/howto/executor/use-celery.html

对于任何执行程序,您可能希望在运行后调整控制并行性的核心设置。

他们都是在[core]下找到的。这些是默认值:

# 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 = 32

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

# Are DAGs paused by default at creation
dags_are_paused_at_creation = True

# When not using pools, tasks are run in the "default pool",
# whose size is guided by this config element
non_pooled_task_slot_count = 128

# The maximum number of active DAG runs per DAG
max_active_runs_per_dag = 16

参考:https://github.com/apache/incubator-airflow/blob/29ae02a070132543ac92706d74d9a5dc676053d9/airflow/config_templates/default_airflow.cfg#L99

答案 1 :(得分:-1)

有人可以提供执行此操作的python代码-(当然,您需要具有至少2个可以并行执行的任务才能使其工作的DAG)?