在单个气流dag中可以安排多少任务?

new*_*ser 2 airflow

我对气流完全不熟悉,并且无法找到可以在单个气流DAG中安排多少任务的任何地方.而且什么都可以每个任务的最大尺寸.

我想安排一个任务,该任务应该能够处理数百万个查询并识别其类型并根据查询类型安排下一个任务.

阅读完整的文档,但找不到它

Tay*_*ton 7

单个DAG中可以包含多少任务是没有限制的.

通过Airflow配置,您可以设置执行时间的并发限制,例如总体并行任务的最大数量,给定DAG的最大并发DAG运行次数等.气流级别,DAG级别和操作员级别的设置用于更粗略到细粒度的控制.

以下是您可以调整的高级并发设置:

# 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
Run Code Online (Sandbox Code Playgroud)

参考:default_airflow.cfg

本答案中更详细地描述了并行性设置.至于每个任务的最大"大小",我假设您指的是资源分配,例如内存或CPU.这是用户可配置的,具体取决于您选择使用的执行程序:

  • LocalExecutor例如,在一个简单的设置中,它将使用主机上可用的任何资源.
  • 相反,MesosExecutor另一方面,可以定义将分配给任务实例的最大CPU和/或内存量,并通过DockerOperator您还可以选择定义给定任务的最大CPU和内存量实例将使用.
  • 使用CeleryExecutor,您可以设置worker_concurrency定义每个工作人员将要执行的任务实例的数量.

限制执行的另一种方法是使用功能(例如),例如,您可以将与数据库通信的任务池的最大大小设置为5,以防止超过5个任务立即命中(并且可能会超载)数据库/ API /您想要汇集的任何资源).