繁体   English   中英

Airflow:如何指定资源池的定量使用?

[英]Airflow: how to specify quantitative usage of a resource pool?

我正在寻找几个开源工作流程调度程序,用于具有异构RAM使用的DAG作业。 调度程序不仅应该调度少于最大线程数,还应该将所有并发任务的RAM总量保持在可用内存之下。

在这个Luigi Q&A中 ,有人解释说

您可以设置配置中可用资源的数量,然后设置任务消耗的资源数量作为任务的属性。 这将限制您一次运行该任务的n

在配置中:

 [resources] api=1 

在任务代码中:

 resources = {"api": 1} 

对于Airflow,我无法在其文档中找到相同的功能。 最好的方法是在资源池中指定多个可用插槽 ,并指定任务实例使用资源池中的单个插槽。 但是,似乎无法指定任务实例在池中使用多个插槽。

问题 :专门针对Airflow,如何指定任务实例的定量资源使用?

假设您正在使用CeleryExecutor ,那么从气流版本1.9.0开始,您可以管理Celery的任务并发性。 这不是您一直在询问的内存管理,而是执行任务的并发工作线程数。

Tweakable参数称为CELERYD_CONCURRENCY这里非常好地解释了如何在Airflow中管理芹菜相关配置。

[编辑]

实际上, Pools也可以用来限制并发性。 假设您想限制资源饥饿的task_id以便同时只运行2个实例。 你唯一需要做的是:

  • create pool(在UI中: Admin - > Pools )为它分配名称,例如my_pool ,并在字段Slots定义任务的并发性(在本例中为2

  • 在实例化将执行此task_id Operator时,传递已定义的池名称( pool=my_pool

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM