我正在尝试修补容器分配代码。通过容器分配,我指的是将容器放置在集群中特定机器上的决策。
我想写我自己的容器分配代码。首先,我用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源代码中找到一个确切的点,在那里我需要编写自己的代码来替换现有的容器分配机制。
1条答案
按热度按时间wlzqhblo1#
起初,我认为日志记录是特定于应用程序的,但所有与资源管理器相关的信息都在名为
hadoop-{username}-resourcemanager-{username}.log
低于log
文件夹。我用了LOG.info
用于调试。我使用先进先出调度和分配机制下的方法
FifoScheduler#assignContainersOnNode
它是从FifoScheduler#assignContainers
它是从FifoScheduler#nodeUpdate
方法。有
FifoScheduler#handle
方法(此处提供更多信息),它不断跟踪不同的事件。NODE_UPDATE
是经常触发的事件之一,因此在给定节点上分配容器。