提问者:小点点

气流平行度


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


共3个答案

匿名用户

平行:不是一个非常描述性的名字。描述说它为气流安装设置了最大任务实例,这有点含糊不清——如果我有两个运行气流工作人员的主机,我会在两个主机上安装气流,所以应该是两个安装,但是这里基于上下文“每个安装”表示每个气流状态数据库。我会把这个命名为max_active_tasks。

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

max_active_runs_per_dag:这一个还行,但因为它似乎只是匹配的dag kwarg的默认值,所以最好在名称中反映这一点,例如default_max_active_runs_for dag,所以让我们继续讨论dag kwarg:

并发:同样,有一个像这样的通用名称,加上并发在其他地方被用于不同的东西,这使得这非常令人困惑。我管这叫max_active_tasks。

max_active_runs:这个听起来不错。

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

max_threads让用户可以控制cpu的使用。它指定调度程序并行性。

匿名用户

现在是2019年,更多更新的文档已经发布。简言之:

AIRFLOW\uuuuu CORE\uuuuu PARALLELISM是可在所有AIRFLOW(所有DAG中的所有任务)上并发运行的最大任务实例数

AIRFLOW\uuuuu CORE\uuuu DAG\u CONCURRENCY是单个特定DAG允许并发运行的最大任务实例数

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

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

parallelism是可在服务器上并发运行的最大任务实例数。这意味着在所有正在运行的DAG中,一次运行的任务不超过32个。

而且

dag_concurrency是允许在特定dag内并发运行的任务实例数。换句话说,可以有2个DAG并行运行16个任务,但是一个有50个任务的DAG也只能运行16个任务,而不是32个任务

根据https://airflow.apache.org/faq.html#how-要减少生产中的dag调度延迟,请执行以下操作:

最大线程数:调度程序将并行生成多个线程来调度DAG。这由默认值为2的max_线程控制。在生产环境中,用户应将此值增加到更大的值(例如,调度程序运行的CPU数-1)。

但这最后一部分似乎不应该占用太多时间,因为它只是“日程安排”部分。不是实际的运行部分。因此,我们认为没有必要对max\u线程进行太多的调整,但是aiffair\uuuu核心\uu并行性aiffair\uu核心\uu DAG\u并发性确实影响了我们。

匿名用户

调度器的max_threads是要在上并行化调度器的进程数。最大线程数不能超过cpu计数。LocalExecutor的并行度是LocalExecutor应该运行的并发任务数。调度器和LocalExecutor都使用python的多处理库来实现并行性。