我在2015年初的MacBook Pro上运行带有+400任务的Airflow流程,配备3.1 GHz Intel Core i7处理器和16GB或RAM。
我正在运行的脚本看起来非常像this,不同之处在于我将DAG定义为
default_args = {
'start_date': datetime.now(),
'max_active_runs': 2
}
试图避免并行发射太多任务。以下是我执行此操作的一系列屏幕截图。我的问题是:
max_active_runs
可以控制在任何给定时间实际执行的进程数。不过,回顾一下我的任务,我会有几十个占用CPU资源的任务,而其余的则是空闲的。这真的很低效,我该如何控制这种行为? 该过程基本上循环完成这些阶段,直到完成。最终任务细分如下:
[2017-08-24 16:26:20,171] {jobs.py:2066} INFO - [backfill progress] | finished run 1 of 1 | tasks waiting: 0 | succeeded: 213 | kicked_off: 0 | failed: 200 | skipped: 0 | deadlocked: 0 | not ready: 0
有什么想法?
答案 0 :(得分:1)
max_active_runs
定义Airflow每个DAG将安排的运行次数。根据您使用的执行程序,执行程序具有特定容量。例如,对于最受欢迎的LocalExecutor,这是由并行性设置的。这是LocalExecutor应运行的并发任务数。
如果要约束并行运行的数量,则应使用pool。