YARN-队列配置
YARN 队列配置说明
1.队列最大可运行个数
配置来源
Integer maxApps = queueMaxApps.get(queue);
return (maxApps == null) ? queueMaxAppsDefault : maxApps;
queueMaxAppsDefault 来自 配置 conf/fair-scheduler.xml 对应的 queueMaxAppsDefault 属性 而 queueMaxApps.get(queue) 来自 队列设置中的 maxRunningApps
yarn 在处理最大可运行app 个数的判断也非常有意思 通过if else 来做两个判断,第一个判断失败,表示用户最大可运行次数可以过。然后判断队列最大可运行次数
if (exceedUserMaxApps(attempt.getUser())) {
attempt.updateAMContainerDiagnostics(AMState.INACTIVATED,
"The user \"" + attempt.getUser() + "\" has reached the maximum limit"
+ " of runnable applications.");
ret = false;
} else if (exceedQueueMaxRunningApps(queue)) {
attempt.updateAMContainerDiagnostics(AMState.INACTIVATED,
"The queue \"" + queue.getName() + "\" has reached the maximum limit"
+ " of runnable applications.");
ret = false;
}
在队列判断的过程中 会从子队列向上轮询到跟队列
public boolean exceedQueueMaxRunningApps(FSQueue queue) {
// Check queue and all parent queues
while (queue != null) {
if (queue.getNumRunnableApps() >= queue.getMaxRunningApps()) {
return true;
}
queue = queue.getParent();
}
return false;
}
所以在一个队列上提交app ,他会检查每一个父队列正在运行的app 是否超过 最大限制。 如果没有设置,则使用全局参数。当然queueMaxAppsDefault 也变成了全局限制。
Last updated
Was this helpful?