在群集中的特定节点上运行我自己的应用程序主程序

lxkprmvk  于 2021-05-30  发布在  Hadoop
关注(0)|答案(1)|浏览(413)

首先,我使用的是hadoop-2.6.0。我想在yarn集群中的特定节点上启动自己的appmaster,以便在预定的ip地址和端口上打开服务器。为此,我编写了一个驱动程序,其中创建了一个resourcerequest对象并调用setresourcename方法来设置主机名,然后通过调用setamcontainerresourcerequest方法将其附加到applicationsubmissioncontext对象。
我尝试了好几次,但无法在特定节点上启动app master。在搜索代码之后,我发现rmappattemptimpl使我在resourcerequest中设置的内容无效,如下所示:

// Currently, following fields are all hard code,                                                                                                                                                                                                                                                                   
    // TODO: change these fields when we want to support                                                                                                                                                                                                                                                                
    // priority/resource-name/relax-locality specification for AM containers                                                                                                                                                                                                                                            
    // allocation.                                                                                                                                                                                                                                                                                                      
    appAttempt.amReq.setNumContainers(1);
    appAttempt.amReq.setPriority(AM_CONTAINER_PRIORITY);
    appAttempt.amReq.setResourceName(ResourceRequest.ANY);
    appAttempt.amReq.setRelaxLocality(true);

在hadoop-2.6.0中,是否有其他方法可以在特定节点上启动应用程序主服务器的容器?

voase2hg

voase2hg1#

applicationsubmissioncontext提供了一个函数setamcontainerresourcerequest,您可以在其中传递resourcerequest对象,在resourcerequest对象中,您可以设置“false”relaxlocality标志,它告诉resourcemanager应用程序希望局部性是松散的(即允许通过机架或任何机架)还是严格的(即指定资源分配的硬约束)。然后使用setresourcename设置主机名。希望有帮助!

相关问题