我正在研究几个开放源码的工作流调度器,它们用于使用异构RAM的DAG作业。调度程序不仅应该调度少于最大线程数的线程,还应该将所有并发任务的RAM总量保持在可用内存以下。
Luigi Q&A
然后,任务将消耗多少资源作为 任务。这将限制你跑步 n 一次完成那个任务 在配置中: [resources] api=1 resources = {"api": 1}
然后,任务将消耗多少资源作为 任务。这将限制你跑步 n 一次完成那个任务
n
在配置中:
[resources] api=1
resources = {"api": 1}
对于Airflow,我在它的文档中找不到相同的功能。最好的办法就是 specify a number of available slots in a resource pool
:特别是对于Airflow,如何指定任务实例的定量资源使用情况?
假设你用的是 CeleryExecutor ,然后从airflow版本1.9.0开始,您可以管理Celery的任务并发性。这并不是您一直在问的内存管理,而是执行任务的并发工作线程的数量。
CeleryExecutor
CELERYD_CONCURRENCY 和 here
CELERYD_CONCURRENCY
[编辑]
事实上, Pools 假设您想限制资源消耗 task_id 这样在同一时间只运行两个实例。你唯一需要做的就是:
Pools
task_id
创建池(在UI中: Admin -&燃气轮机; 游泳池 )指定名称,例如。 my_pool 并在字段中定义任务的并发性 Slots (在这种情况下 2
Admin
游泳池
my_pool
Slots
2
在实例化 Operator 会执行这个的 任务id ,传递定义的池名称( pool=my_pool )
Operator
任务id
pool=my_pool