如何运行超过8k任务的Airflow dag?

时间:2019-05-19 00:17:45

标签: python airflow

我有一个约有8k任务的气流DAG。当我将任务数限制为1000时,UI上会显示DAG。但是,当我启用DAG中的所有任务时,它就会超时。

我在网络服务器或调度程序上遇到任何限制吗?一般来说,如何处理Airflow中的大量任务?任何配置设置等都将非常有用。

此外,我是否应该以这种规模使用SubDagOperator?请指教。

谢谢

1 个答案:

答案 0 :(得分:0)

我能够执行超过165,000个气流任务!

但是有一个陷阱。并非所有任务都计划在一个Airflow Dag中呈现。

当我尝试安排越来越多的任务时,我遇到的问题是计划程序和Web服务器。 随着越来越多的任务被调度,调度程序和Web服务器上的内存和cpu消耗急剧增加(这很明显并且很有意义)。到了节点无法再处理的地步(调度程序将超过80GB的内存用于16,000多个任务)

我将单个dag分为2个dag。一个是领导者/主人。第二个是工人dag。

我有一个airflow变量,它说明一次要处理多少个任务(例如num_tasks=10,000)。由于我有超过165,000个任务,因此dag一次将分17批处理10k任务。

领导者dag,所做的全部就是用不同的10k任务组反复触发同一工人dag,并监视该工人dag的运行状态。第一个触发器操作员为第一组10k任务触发工作人员dag,并一直等待直到工作人员dag完成。完成后,它将触发下一个10k任务批次的同一工作人员dag,依此类推。

这样,worker dag会不断被重用,并且永远不必调度超过X num_tasks

最重要的是,找出您的气流设置可以处理的max_number个任务。然后以领导者/工人的方式反复进行max_tasks的破坏,直到完成所有任务。

希望这很有帮助。