Example usage for org.apache.hadoop.yarn.api.records NodeReport getNodeLabels

List of usage examples for org.apache.hadoop.yarn.api.records NodeReport getNodeLabels

Introduction

In this page you can find the example usage for org.apache.hadoop.yarn.api.records NodeReport getNodeLabels.

Prototype

@Public
@Stable
public abstract Set<String> getNodeLabels();

Source Link

Document

Get labels of this node.

Usage

From source file:org.apache.drill.yarn.appMaster.NodeInventory.java

License:Apache License

private void buildNodeMap() throws YarnFacadeException {
    List<NodeReport> nodes = yarn.getNodeReports();
    for (NodeReport node : nodes) {
        String hostName = node.getNodeId().getHost();
        nodeMap.put(hostName, node.getHttpAddress());
        yarnNodes.put(hostName, node);//from w ww  . j  a v  a2  s .c  o m
    }
    if (LOG.isInfoEnabled()) {
        LOG.info("YARN Node report");
        for (NodeReport node : nodes) {
            LOG.info("Node: " + node.getHttpAddress() + ", Rack: " + node.getRackName() + " has "
                    + node.getCapability().getMemory() + " MB, " + node.getCapability().getVirtualCores()
                    + " vcores, labels: " + node.getNodeLabels());
        }
    }
}

From source file:uk.ac.gla.terrier.probos.controller.ControllerServer.java

License:Open Source License

@Override
public PBSNodeStatus[] getNodesStatus() throws Exception {

    //first use the container reports of all running jobs to get a picture of the hosts in use
    //for each job
    TIntObjectHashMap<List<ContainerId>> job2con = getAllActiveContainers();
    final Map<String, TIntArrayList> node2job = new HashMap<String, TIntArrayList>();
    job2con.forEachEntry(new TIntObjectProcedure<List<ContainerId>>() {
        @Override//from ww  w  . java 2  s .co  m
        public boolean execute(int jobId, List<ContainerId> containerList) {
            for (ContainerId cid : containerList) {
                try {
                    ContainerReport cr = yClient.getContainerReport(cid);
                    String hostname = cr.getAssignedNode().getHost();

                    TIntArrayList jobs = node2job.get(hostname);
                    if (jobs == null)
                        node2job.put(hostname, jobs = new TIntArrayList());
                    jobs.add(jobId);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }
            return true;
        }
    });

    List<NodeReport> nodeReports = yClient.getNodeReports();

    PBSNodeStatus[] rtr = new PBSNodeStatus[nodeReports.size()];
    for (int i = 0; i < rtr.length; i++) {
        final NodeReport node = nodeReports.get(i);
        String hostname = node.getNodeId().getHost();
        String yarnState = node.getNodeState().toString();

        String rack = node.getRackName();
        String tracker = node.getHttpAddress();
        int numContainers = node.getNumContainers();
        int numProcs = node.getCapability().getVirtualCores();
        TIntArrayList jobList = node2job.get(hostname);
        int[] jobs;
        if (jobList == null)
            jobs = new int[0];
        else
            jobs = jobList.toArray();

        String state = "free";
        if (numContainers >= numProcs)
            state = "busy";

        StringBuilder status = new StringBuilder();
        status.append("capacity=" + node.getCapability().toString());
        status.append(",used=" + node.getUsed().toString());

        rtr[i] = new PBSNodeStatus(hostname, state, status.toString(), jobs, tracker, node.getHealthReport(),
                rack, yarnState, numProcs, node.getNodeLabels());
    }
    return rtr;
}