如何 运行 Airflow dag 超过 10 万个任务?
How to run Airflow dag with more than 100 thousand tasks?
我有一个气流 DAG,它有超过 100,000 个任务。
我最多只能 运行 1000 个任务。除了调度程序挂起之外,网络服务器无法呈现任务并且在 UI.
上速度极慢
我尝试增加 min_file_process_interval
和 processor_poll_interval
配置参数。
我已将 num_duration
设置为 3600,以便调度程序每小时重新启动一次。
我在网络服务器或调度程序上遇到了任何限制吗?总的来说,Airflow中如何处理大量的任务?任何配置设置等都会非常有帮助。
此外,我是否应该在这种规模下使用 SubDagOperator?请指教
谢谢,
我能够 运行 超过 165,000 个 airflow 任务!
但是有一个问题。并非所有任务都在单个 Airflow Dag 中安排和呈现。
当我尝试安排越来越多的任务时遇到的问题是调度程序和网络服务器。
随着越来越多的任务被调度,调度程序和网络服务器的内存和 cpu 消耗急剧增加(这是显而易见的,也是有道理的)。它到了节点无法再处理的地步(调度程序使用超过 80GB 的内存来处理 16,000 多个任务)
我将单个 dag 拆分为 2 个 dag。一个是leader/master。第二个是worker dag.
我有一个气流变量,表示一次要处理多少任务(例如,num_tasks=10,000
)。由于我有超过 165,000 个任务,worker dag 将分 17 个批次一次处理 10k 个任务。
leader dag,它所做的就是用不同的 10k 任务集反复触发同一个 worker dag,并监视 worker dag 运行 状态。第一个触发器运算符为第一组 10k 任务触发 worker dag,并一直等待直到 worker dag 完成。完成后,它会使用下一批 10k 任务等触发同一个 worker dag。
这样,worker dag 就会不断被重用,永远不必安排超过 X num_tasks
最重要的是,找出您的 Airflow 设置可以处理的 max_number
任务。然后以 leader/worker 的方式启动 dags max_tasks
一遍又一遍,直到完成所有任务。
希望这对您有所帮助。
我有一个气流 DAG,它有超过 100,000 个任务。 我最多只能 运行 1000 个任务。除了调度程序挂起之外,网络服务器无法呈现任务并且在 UI.
上速度极慢我尝试增加 min_file_process_interval
和 processor_poll_interval
配置参数。
我已将 num_duration
设置为 3600,以便调度程序每小时重新启动一次。
我在网络服务器或调度程序上遇到了任何限制吗?总的来说,Airflow中如何处理大量的任务?任何配置设置等都会非常有帮助。
此外,我是否应该在这种规模下使用 SubDagOperator?请指教
谢谢,
我能够 运行 超过 165,000 个 airflow 任务!
但是有一个问题。并非所有任务都在单个 Airflow Dag 中安排和呈现。
当我尝试安排越来越多的任务时遇到的问题是调度程序和网络服务器。 随着越来越多的任务被调度,调度程序和网络服务器的内存和 cpu 消耗急剧增加(这是显而易见的,也是有道理的)。它到了节点无法再处理的地步(调度程序使用超过 80GB 的内存来处理 16,000 多个任务)
我将单个 dag 拆分为 2 个 dag。一个是leader/master。第二个是worker dag.
我有一个气流变量,表示一次要处理多少任务(例如,num_tasks=10,000
)。由于我有超过 165,000 个任务,worker dag 将分 17 个批次一次处理 10k 个任务。
leader dag,它所做的就是用不同的 10k 任务集反复触发同一个 worker dag,并监视 worker dag 运行 状态。第一个触发器运算符为第一组 10k 任务触发 worker dag,并一直等待直到 worker dag 完成。完成后,它会使用下一批 10k 任务等触发同一个 worker dag。
这样,worker dag 就会不断被重用,永远不必安排超过 X num_tasks
最重要的是,找出您的 Airflow 设置可以处理的 max_number
任务。然后以 leader/worker 的方式启动 dags max_tasks
一遍又一遍,直到完成所有任务。
希望这对您有所帮助。