我正在尝试修改 YARN 容器分配代码。通过容器分配,我的意思是决定将容器放置在集群中的特定计算机上。
我想编写自己的容器分配代码。首先,我使用 YARN 在伪分布式模式下运行 Hadoop。我正在尝试在源代码中找到相关点。到目前为止,使用 print 语句,我已经能够确定进行分配的类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
起初,我认为日志记录是特定于应用程序的,但与资源管理器相关的所有信息都在名为hadoop-{username}-resourcemanager-{username}.log
的日志文件下log
文件夹下。我没有使用 print 语句,而是使用 LOG.info
进行调试。
Location of allocation mechanism in hadoop source code
我正在使用FIFO调度程序,分配机制在方法FifoScheduler#assignContainersOnNode
下,该方法从方法FifoScheduler#assignContainers
调用,从FifoScheduler#nodeUpdate
方法调用。
有FifoScheduler#handle
方法(更多信息在这里),它不断跟踪不同的事件。 NODE_UPDATE
是经常触发的其中之一,因此在给定节点上分配容器。