java—在使用容量调度器的单个应用程序中,hadoopYarn中容器的分配顺序是什么?

u91tlkcl  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(280)

我在一个由1个主节点(resourcemanager)和3个从节点(nodemanagers)组成的集群上运行一个yarn应用程序-总内存=24gb,总vcores=12。我使用的是hadoop2.4.1,调度器是capacityscheduler和dominantresourcecalculator。此应用程序通过异步amrm客户端(amrmclientasync)向resourcemanager提交10个容器请求。我观察到的行为是请求最多资源的容器请求首先得到分配。例如,9个请求是针对2gb容器的,1个请求是针对4gb容器的,然后4gb容器被分配,这时它遇到了一个问题-它就停在那里-它没有为所有2gb请求分配任何容器!
一旦分配了一个容器,我的应用程序就会在它上面运行一个任务,一旦它完成,应用程序就会为此任务提交一个新的容器请求(这些任务是重复的)。然后rm再次为此请求分配一个4gb容器,完全忽略中间的所有请求。我不知道这是否与amrmclientasync类有关-我还没有尝试使用普通的amrmclient。现在我有需要2GB内存的任务和需要4GB内存的任务。由于这个问题,它只能一次又一次地运行4gb任务。
如果所有的容器请求在资源方面都是相同的,那么这个问题就消失了,rm将分配所有请求的容器。
找不到与此相关的任何文档/已知错误。我在这里遇到了麻烦,任何帮助都将不胜感激。提前谢谢。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题