我有一个链接 AWS Batch 作业的问题。
有3个计算环境(CE_A
,CE_B
,CE_C
)并且他们关联了一个作业队列每个(JQ_A
,JQ_B
,JQ_C
)。
有6个职位定义(JD_1
,JD_2
,...,JD_6
)。
让<jqce>-<jd>-<name>
成为在作业队列(或计算环境)<jqce>
上启动的作业,并使用作业定义<jd>
。示例:A-1-a
,C-6-z
。
我想按顺序执行大约20个作业(使用不同的环境变量启动):A-1-a
,A-1-b
,B-2-c
,A-3-d
,{{1} },A-3-e
,...
对于每个作业,我指定对以前作业的依赖关系:
A-3-f
中的params.dependsOn = [{ "jobId": "xxxxx-xxxx-xxxx-xxxxxx"}]
。
在等待几分钟进行资源分配后,前两个作业Batch.submitJob(params)
和A-1-a
成功执行。
在等待计算环境A-1-b
几分钟后,第三个作业B-2-c
也成功执行。
同时,计算环境CE_B
已关闭,因为没有作业。
这就是问题:
我预计此时CE_A
会下降,CE_B
会上升。 CE_A
没有上升。
CE_A
永远不会被执行,16小时后它仍处于A-3-d
状态。
PENDING
没问题,它的依赖关系很久以前就结束了。dependsOn
批处理运行正常,使用相同的环境变量和配置。问题
dependsOn
和AWS Batch
?dependsOn
对你好吗?我似乎无需设置params.dependsOn = [{ "jobId": "xxx-xxx-xxx-xxx" }]
属性see array jobs; 答案 0 :(得分:2)
params.dependsOn = [{“jobId”:“xxx-xxx-xxx-xxx”}]对你好吗?看来我不必设置type属性,参见array jobs;
是,仅在将其定义为阵列作业时才需要输入。您提供的JobID是您提交特定职位时返回的内容吗?
是否可以链接来自不同作业队列的批次? 是否可以从不同的计算环境中链接批次? 你应该能够做到,但我从来没有这样做过。
同时,计算环境CE_A因为没有作业而被关闭。
所以CE_A已经运行并且已经运行了A-1-a,A-1-b?
我记得AWS每10分钟检查某些状态,而且人们遇到系统似乎陷入困境的情况。
您可以将CE_A设置为始终至少具有1个CPU,这样它就不会消失或变得难以获得版本。
您可以简单地进行测试吗?更短的行动,减少队列等
考虑在Batch上检查AWS论坛。那里活动不多但值得额外一双眼睛。