我对气流完全不熟悉,并且无法找到可以在单个气流DAG中安排多少任务的任何地方。并且每项任务的最大尺寸。
我想安排一个任务,该任务应该能够处理数百万个查询并识别其类型并根据查询类型安排下一个任务。
阅读完整的文档,但找不到它
答案 0 :(得分:6)
单个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
在this answer中更详细地描述了并行设置。 至于最大尺寸"对于每项任务,我假设您指的是资源分配,例如内存或CPU。这是用户可配置的,具体取决于您选择使用的执行程序:
LocalExecutor
的简单设置中,它将使用主机上可用的任何资源。MesosExecutor
,可以定义将分配给任务实例的最大CPU和/或内存量,通过DockerOperator
,您还可以使用CeleryExecutor
用于定义给定任务实例将使用的最大CPU和内存量的选项。worker_concurrency
,您可以设置ls -1 "$MyDir" | sort -hr | head -n 1
来定义每个工作人员将要执行的任务实例数。限制执行的另一种方法是使用Pools功能(example),例如,您可以将与数据库通信的任务池的最大大小设置为5以防止超过一次点击它就可以完成5个任务(并且可能会使数据库/ API /您想要汇集的任何资源超载)。
答案 1 :(得分:0)