【发布时间】:2022-01-13 20:51:48
【问题描述】:
我想并行运行 1000 个任务。这些是短期运行的批处理作业,它们使用相同的 taskdef(因此是相同的容器),只是传递的 args 不同(基本上传递的 arg 是从 0 到 999 的值)。
正如这里所解释的那样,我使用气流循环调用 ECSOperator:
https://headspring.com/2020/06/17/airflow-parallel-tasks/.
当我在 AWS 中查看我的 ECS 集群的“任务”选项卡时,我看到队列中的任务混合了 PROVISIONING、PENDING 和 RUNNING。
RUNNING 作业只是少数 - 大多数任务处于 PENDING 状态,最终进入 RUNNING 状态。
问题:
- 为什么大多数作业处于 PENDING 状态?他们在等什么(比如对 RUNNING 工作的限制?)?我如何检查它在此 PENDING 状态期间正在做什么?
- 为什么 RUNNING 作业很少?我怎样才能使大多数(如果不是全部)任务同时进入 RUNNING 状态?使用 Fargate 时可以同时运行的作业数量是否有限制?
- “服务”选项卡是空的 - 我没有配置任何服务 - 这是否仅适用于长时间运行的作业/守护程序,或者像我这样的批处理作业也可以利用它(并达到获得所有 1000 个任务的目标同时运行)?
- 我没有在“容量提供程序”选项卡中设置任何内容。这是否有助于让更多任务并行运行?
- 我不清楚这里的自动缩放概念 - Fargate 是否应该在需要时提供 1000 个 CPU 以便所有这些任务可以并行运行?是否有默认限制,如果有,我该如何控制?
【问题讨论】:
标签: python airflow amazon-ecs aws-fargate