之前遇到一个问题。使用CapacityScheduler调度器,在运行一个长作业时,如果有另一个线程或用户在不停获取与计算队列信息,那么ResourceManager 会因为内存不足导致OOM异常。原因是CapacityScheduler 的handle 函数死锁之后,后续的来自集群节点的event无法执行,导致ResourceManager 内部消息队列过载,最终OOM崩溃。

官方给出了相关的Patch, 地址为: https://issues.apache.org/jira/browse/YARN-3251

我遇到的问题,堆栈信息如下: