Example usage for org.apache.hadoop.yarn.api ApplicationMasterProtocol registerApplicationMaster

List of usage examples for org.apache.hadoop.yarn.api ApplicationMasterProtocol registerApplicationMaster

Introduction

In this page you can find the example usage for org.apache.hadoop.yarn.api ApplicationMasterProtocol registerApplicationMaster.

Prototype

@Public
@Stable
@Idempotent
public RegisterApplicationMasterResponse registerApplicationMaster(RegisterApplicationMasterRequest request)
        throws YarnException, IOException;

Source Link

Document

The interface used by a new ApplicationMaster to register with the ResourceManager.

Usage

From source file:com.datatorrent.stram.StramMiniClusterTest.java

License:Apache License

@Ignore
@Test//from w  ww  .  ja  v a  2s .  c o  m
public void testUnmanagedAM() throws Exception {

    new InlineAM(conf) {
        @Override
        @SuppressWarnings("SleepWhileInLoop")
        public void runAM(ApplicationAttemptId attemptId) throws Exception {
            LOG.debug("AM running {}", attemptId);

            //AMRMClient amRmClient = new AMRMClientImpl(attemptId);
            //amRmClient.init(conf);
            //amRmClient.start();

            YarnClientHelper yarnClient = new YarnClientHelper(conf);
            ApplicationMasterProtocol resourceManager = yarnClient.connectToRM();

            // register with the RM (LAUNCHED -> RUNNING)
            RegisterApplicationMasterRequest appMasterRequest = Records
                    .newRecord(RegisterApplicationMasterRequest.class);
            resourceManager.registerApplicationMaster(appMasterRequest);

            // AM specific logic

            /*
            int containerCount = 1;
            Resource capability = Records.newRecord(Resource.class);
            capability.setMemory(1500);
                    
            Priority priority = Records.newRecord(Priority.class);
            priority.setPriority(10);
                    
            String[] hosts = {"vm1"};
            String[] racks = {"somerack"};
                    
            AMRMClient.ContainerRequest req = new AMRMClient.ContainerRequest(capability, hosts, racks, priority, containerCount);
            amRmClient.addContainerRequest(req);
                    
            for (int i=0; i<100; i++) {
              AllocateResponse ar = amRmClient.allocate(0);
              Thread.sleep(1000);
              LOG.debug("allocateResponse: {}" , ar);
            }
            */

            int responseId = 0;
            AllocateRequest req = Records.newRecord(AllocateRequest.class);
            req.setResponseId(responseId++);

            List<ResourceRequest> lr = Lists.newArrayList();
            lr.add(setupContainerAskForRM("hdev-vm", 1, 128, 10));
            lr.add(setupContainerAskForRM("/default-rack", 1, 128, 10));
            lr.add(setupContainerAskForRM("*", 1, 128, 10));

            req.setAskList(lr);

            LOG.info("Requesting: " + req.getAskList());
            resourceManager.allocate(req);

            for (int i = 0; i < 100; i++) {
                req = Records.newRecord(AllocateRequest.class);
                req.setResponseId(responseId++);

                AllocateResponse ar = resourceManager.allocate(req);
                sleep(1000);
                LOG.debug("allocateResponse: {}", ar);
            }

            // unregister from RM
            FinishApplicationMasterRequest finishReq = Records.newRecord(FinishApplicationMasterRequest.class);
            finishReq.setFinalApplicationStatus(FinalApplicationStatus.SUCCEEDED);
            finishReq.setDiagnostics("testUnmanagedAM finished");
            resourceManager.finishApplicationMaster(finishReq);

        }

        private ResourceRequest setupContainerAskForRM(String resourceName, int numContainers,
                int containerMemory, int priority) {
            ResourceRequest request = Records.newRecord(ResourceRequest.class);

            // setup requirements for hosts
            // whether a particular rack/host is needed
            // Refer to apis under org.apache.hadoop.net for more
            // details on how to get figure out rack/host mapping.
            // using * as any host will do for the distributed shell app
            request.setResourceName(resourceName);

            // set no. of containers needed
            request.setNumContainers(numContainers);

            // set the priority for the request
            Priority pri = Records.newRecord(Priority.class);
            pri.setPriority(priority);
            request.setPriority(pri);

            // Set up resource type requirements
            // For now, only memory is supported so we set memory requirements
            Resource capability = Records.newRecord(Resource.class);
            capability.setMemory(containerMemory);
            request.setCapability(capability);

            return request;
        }

    }.run();

}

From source file:org.apache.hama.bsp.BSPApplicationMaster.java

License:Apache License

/**
 * Registers this application master with the Resource Manager and retrieves a
 * response which is used to launch additional containers.
 *///from  w  ww .jav a  2s  .co  m
private static RegisterApplicationMasterResponse registerApplicationMaster(
        ApplicationMasterProtocol resourceManager, String appMasterHostName, int appMasterRpcPort,
        String appMasterTrackingUrl) throws YarnException, IOException {

    RegisterApplicationMasterRequest appMasterRequest = Records
            .newRecord(RegisterApplicationMasterRequest.class);
    appMasterRequest.setHost(appMasterHostName);
    appMasterRequest.setRpcPort(appMasterRpcPort);
    // TODO tracking URL
    appMasterRequest.setTrackingUrl(appMasterTrackingUrl);
    RegisterApplicationMasterResponse response = resourceManager.registerApplicationMaster(appMasterRequest);
    LOG.info("ApplicationMaster has maximum resource capability of: "
            + response.getMaximumResourceCapability().getMemory());
    return response;
}

From source file:org.springframework.yarn.am.AppmasterRmTemplate.java

License:Apache License

@Override
public RegisterApplicationMasterResponse registerApplicationMaster(final String host, final Integer rpcPort,
        final String trackUrl) {
    return execute(new YarnRpcCallback<RegisterApplicationMasterResponse, ApplicationMasterProtocol>() {
        @Override/*from   w  w  w.  j  a  v  a 2 s.c o  m*/
        public RegisterApplicationMasterResponse doInYarn(ApplicationMasterProtocol proxy)
                throws YarnException, IOException {
            RegisterApplicationMasterRequest appMasterRequest = Records
                    .newRecord(RegisterApplicationMasterRequest.class);
            appMasterRequest.setHost(host != null ? host : "");
            appMasterRequest.setRpcPort(rpcPort != null ? rpcPort : 0);
            appMasterRequest.setTrackingUrl(trackUrl != null ? trackUrl : "");
            return proxy.registerApplicationMaster(appMasterRequest);
        }
    });
}