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



首先,我使用的是Hadoop-2.6.0。我想在YARN集群中的特定节点上启动我自己的应用程序主机,以便在预定的IP地址和端口上打开服务器。为此,我编写了一个驱动程序,在其中创建了一个ResourceRequest对象,并调用setResourceName方法来设置主机名,并通过调用setAMContainerResourceRequest方法将其附加到ApplicationSubmissionContext对象。

我尝试了好几次,但无法在特定节点上启动应用程序主机。搜索代码后,我发现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中,有没有其他方法可以为特定节点上的应用程序主机启动容器?

ApplicationSubmissionContext提供了一个函数setAMContainerResourceRequest,您可以在其中传递ResourceRequest对象,在ResourceRequest对象中,您可以将RelaxLocality标志设置为"false",其告诉资源管理器该应用程序是否希望局部性是松散的(即允许跌落到机架或任何)或严格的(即指定对资源分配的硬约束)。然后使用setResourceName设置主机名。我希望它能有所帮助!

最新更新