气流并行

时间:2016-07-05 10:08:57

标签: airflow

Local Executor在计划任务时生成新进程。它创建的进程数量是否有限制。我需要改变它。我需要知道调度程序的“max_threads”和“max_threads”之间有什么区别 airflow.cfg中的“并行性”?

3 个答案:

答案 0 :(得分:56)

并行:不是一个非常具有描述性的名称。描述说它设置了气流安装的最大任务实例,这有点模棱两可 - 如果我有两个运行气流工作的主机,我在两个主机上安装了气流,所以这应该是两个安装,但是基于关于环境'每次安装'这意味着每个Airflow状态数据库'。我将此名称命名为max_active_tasks。

dag_concurrency:尽管名称基于评论,但这实际上是任务并发性,而且是每个工作者的。我将此命名为max_active_tasks_for_worker(per_worker会建议它是工作人员的全局设置,但我认为您可以为此设置不同值的工作人员。)

max_active_runs_per_dag :这个有点好,但由于它似乎只是匹配的DAG kwarg的默认值,所以在名称中反映出来可能会很好default_max_active_runs_for_dags 因此,让我们转向DAG kwargs:

并发性:同样,拥有这样的通用名称,再加上并发用于其他地方的事实使得这非常令人困惑。我称之为max_active_tasks。

max_active_runs :这个听起来不错。

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

max_threads 为用户提供了对cpu使用情况的一些控制权。它指定调度程序并行性。

答案 1 :(得分:10)

调度程序的max_threads是调度程序的并行化进程数。 max_threads不能超过cpu计数。 LocalExecutor的parallelism是LocalExecutor应运行的并发任务数。调度程序和LocalExecutor都使用python的多处理库进行并行化。

答案 2 :(得分:4)

现在是2019年,并且出现了更多更新的文档。简而言之:

AIRFLOW__CORE__PARALLELISM是所有Airflow(所有dag中的所有任务)可以同时运行的最大任务实例数

AIRFLOW__CORE__DAG_CONCURRENCY是单个特定DAG允许并发运行的最大任务实例数。

这些文档对其进行了更详细的描述:

根据https://www.astronomer.io/guides/airflow-scaling-workers/

  

parallelism是可以运行的任务实例的最大数量   同时进行气流处理。这意味着在所有运行的DAG中,没有   一次可以运行32个以上的任务。

  

dag_concurrency是允许运行的任务实例的数量   同时在特定的dag中。换句话说,你可以有2   DAG每个并行运行16个任务,但是一个DAG可以并行运行50个任务   也只会执行16个任务,而不是32

然后,根据https://airflow.apache.org/faq.html#how-to-reduce-airflow-dag-scheduling-latency-in-production

  

max_threads:调度程序将并行产生多个线程   安排工作由max_threads控制,默认值为   2.在生产中,用户应将此值增加到更大的值(例如,调度程序运行的cpus数-1)。

但是,似乎最后一块不应占用太多时间,因为它只是“计划”部分。不是实际的运行部分。因此,我们认为不需要对max_threads进行大量调整,但是AIRFLOW__CORE__PARALLELISMAIRFLOW__CORE__DAG_CONCURRENCY确实影响了我们。