YARN(Hadoop)中的容器分配代码
我在尝试修补YARN容器分配代码。通过容器分配,我的意思是决定将容器放置在集群中的特定机器上。YARN(Hadoop)中的容器分配代码
我想写我自己的容器分配代码。首先,我使用YARN以伪分布模式运行Hadoop。我正试图在源代码中找到相关的要点。到目前为止,使用打印语句,我已经能够确定分配发生的类别hadoop-source-code/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/api/impl/pb/client/ApplicationMasterProtocolPBClientImpl.java#allocate
。但是,我无法进一步缩小范围。进一步研究这种方法,我无法打印任何东西。
回顾一下 - 我想找到Hadoop源代码中的确切位置,我需要编写自己的代码来替换现有的容器分配机制。
I have not been able to print anything
起初,我还以为是记录特定应用,但到资源管理器相关的所有信息都在log
文件夹下的hadoop-{username}-resourcemanager-{username}.log
日志文件。我使用LOG.info
进行调试,而不是打印语句。
Location of allocation mechanism in hadoop source code
我使用FIFO调度器和分配机制是下方法FifoScheduler#assignContainersOnNode
其从FifoScheduler#assignContainers
其从FifoScheduler#nodeUpdate
方法调用被调用。
有FifoScheduler#handle
方法(more information here),它不断跟踪不同的事件。 NODE_UPDATE
是经常触发的那些事件之一,因此发生给定节点上容器的分配。