【问题标题】:what's the difference between airflow's 'parallelism' and 'dag_concurrency'气流的“并行”和“dag_concurrency”有什么区别
【发布时间】:2019-04-22 03:31:19
【问题描述】:

我不明白dag_concurrencyparallelism 之间的区别。文档和这里的一些相关帖子在某种程度上与我的发现相矛盾。

我之前的理解是parallelism 参数允许您设置可能在气流中的全局(跨所有 DAG)TaskRuns 的最大数量,dag_concurrency 表示单个 Dag 可能的最大 TaskRuns 数量。

所以我将 parallelism 设置为 8 并将 dag_concurrency 设置为 4 并运行了一个 Dag。我发现它一次运行 8 个 TI,但我希望它一次运行 4 个。

  1. 这怎么可能?

  2. 另外,如果有帮助,我已将这些任务的池大小设置为 10 左右。但这并不重要,因为“配置”参数的优先级高于池的优先级,对吧?

【问题讨论】:

标签: python airflow


【解决方案1】:

另一个答案只是部分正确:

dag_concurrency 没有明确控制每个工作人员的任务。 dag_concurrency 是每个 dag_run 同时运行的任务数。因此,如果您的 DAG 有一个可以同时运行 10 个任务的地方,但您想限制工作人员的流量,您可以将 dag_concurrency 设置得更低。

队列和池设置也会影响每个工作人员的任务数。

当您开始构建同时运行的 DAG 的大型库时,这些设置非常重要。

并行度是所有工作人员和 DAG 的最大任务数。

【讨论】:

    【解决方案2】:

    parallelism 最好被视为max_active_tasks_total。您将其设置为 8,表示“我只想在所有工作人员之间同时运行 8 个任务”。

    dag_concurrency 不如max_active_tasks_for_worker。您将其设置为 4,表示“我只希望每个工作人员一次最多运行 4 个任务实例”。

    因此,当您运行 dag 时,它在 2 个两个工作人员之间运行 8 个任务实例,每个工作人员运行 4 个任务。我想你只是搞砸了dag_concurreny

    此答案部分取自此 SO 答案:SO Answer

    【讨论】:

      猜你喜欢
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-12-18
      • 2010-11-06
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 2011-01-17
      相关资源
      最近更新 更多