如何运行超过10万个任务的气流dag?



我有一个气流DAG,它有超过100,000个任务。 我最多只能运行 1000 个任务。除此之外,调度程序挂起,Web 服务器无法呈现任务,并且在 UI 上非常慢。

我尝试增加、min_file_process_intervalprocessor_poll_interval配置参数。

我已将num_duration设置为 3600,以便调度程序每小时重新启动一次。

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

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

谢谢

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

但有一个问题。并非所有任务都在单个气流 Dag 中计划和呈现。

当我尝试安排越来越多的任务时,我遇到的问题是调度程序和Web服务器的问题。 随着越来越多的任务被调度,调度程序和 Web 服务器上的内存和 CPU 消耗急剧增加(这是显而易见且有意义的)。它到了节点无法再处理它的地步(调度程序为16,000+任务使用超过80GB的内存)

我将单个dagger分成 2 个dagger。一个是领导者/大师。第二个是工人dagger。

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

领导者 dag,它所做的只是使用不同的 10k 任务集一遍又一遍地触发相同的工作线程 dag,并监控工作线程 dag 运行状态。第一个触发器运算符为第一组 10k 任务触发工作线程 dag,并一直等待直到工作线程 dag 完成。完成后,它会触发下一批 10k 任务的相同工作线程 dag,依此类推。

这样,worker dag 就可以不断被重用,并且永远不必安排超过 Xnum_tasks

最重要的是,弄清楚您的气流设置可以处理的任务max_number。然后以领导者/工人的方式一遍又一遍地启动 dagsmax_tasks,直到完成所有任务。

希望这是有帮助的。

最新更新