Search in sources :

Example 1 with RefreshNodesRequest

use of org.apache.hadoop.yarn.server.api.protocolrecords.RefreshNodesRequest in project hadoop by apache.

the class RMAdminCLI method refreshNodes.

private int refreshNodes(int timeout, String trackingMode) throws IOException, YarnException {
    boolean serverTracking = !"client".equals(trackingMode);
    // Graceful decommissioning with timeout
    ResourceManagerAdministrationProtocol adminProtocol = createAdminProtocol();
    RefreshNodesRequest gracefulRequest = RefreshNodesRequest.newInstance(DecommissionType.GRACEFUL, timeout);
    adminProtocol.refreshNodes(gracefulRequest);
    if (serverTracking) {
        return 0;
    }
    CheckForDecommissioningNodesRequest checkForDecommissioningNodesRequest = recordFactory.newRecordInstance(CheckForDecommissioningNodesRequest.class);
    long waitingTime;
    boolean nodesDecommissioning = true;
    // As RM enforces timeout automatically, client usually don't need
    // to forcefully decommission nodes upon timeout.
    // Here we let the client waits a small additional seconds so to avoid
    // unnecessary double decommission.
    final int gracePeriod = 5;
    // decommissioned
    for (waitingTime = 0; timeout == -1 || (timeout >= 0 && waitingTime < timeout + gracePeriod); waitingTime++) {
        // wait for one second to check nodes decommissioning status
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
        // Ignore the InterruptedException
        }
        CheckForDecommissioningNodesResponse checkForDecommissioningNodes = adminProtocol.checkForDecommissioningNodes(checkForDecommissioningNodesRequest);
        Set<NodeId> decommissioningNodes = checkForDecommissioningNodes.getDecommissioningNodes();
        if (decommissioningNodes.isEmpty()) {
            nodesDecommissioning = false;
            break;
        } else {
            StringBuilder nodes = new StringBuilder();
            for (NodeId nodeId : decommissioningNodes) {
                nodes.append(nodeId).append(",");
            }
            nodes.deleteCharAt(nodes.length() - 1);
            System.out.println("Nodes '" + nodes + "' are still decommissioning.");
        }
    }
    if (nodesDecommissioning) {
        System.out.println("Graceful decommissioning not completed in " + timeout + " seconds, issuing forceful decommissioning command.");
        RefreshNodesRequest forcefulRequest = RefreshNodesRequest.newInstance(DecommissionType.FORCEFUL);
        adminProtocol.refreshNodes(forcefulRequest);
    } else {
        System.out.println("Graceful decommissioning completed in " + waitingTime + " seconds.");
    }
    return 0;
}
Also used : CheckForDecommissioningNodesRequest(org.apache.hadoop.yarn.server.api.protocolrecords.CheckForDecommissioningNodesRequest) ResourceManagerAdministrationProtocol(org.apache.hadoop.yarn.server.api.ResourceManagerAdministrationProtocol) RefreshNodesRequest(org.apache.hadoop.yarn.server.api.protocolrecords.RefreshNodesRequest) NodeId(org.apache.hadoop.yarn.api.records.NodeId) CheckForDecommissioningNodesResponse(org.apache.hadoop.yarn.server.api.protocolrecords.CheckForDecommissioningNodesResponse)

Example 2 with RefreshNodesRequest

use of org.apache.hadoop.yarn.server.api.protocolrecords.RefreshNodesRequest in project hadoop by apache.

the class RMAdminCLI method refreshNodes.

private int refreshNodes(boolean graceful) throws IOException, YarnException {
    // Refresh the nodes
    ResourceManagerAdministrationProtocol adminProtocol = createAdminProtocol();
    RefreshNodesRequest request = RefreshNodesRequest.newInstance(graceful ? DecommissionType.GRACEFUL : DecommissionType.NORMAL);
    adminProtocol.refreshNodes(request);
    return 0;
}
Also used : ResourceManagerAdministrationProtocol(org.apache.hadoop.yarn.server.api.ResourceManagerAdministrationProtocol) RefreshNodesRequest(org.apache.hadoop.yarn.server.api.protocolrecords.RefreshNodesRequest)

Example 3 with RefreshNodesRequest

use of org.apache.hadoop.yarn.server.api.protocolrecords.RefreshNodesRequest in project hadoop by apache.

the class TestResourceManagerAdministrationProtocolPBClientImpl method testRefreshNodes.

/**
   * Test method refreshNodes. This method is present and it works.
   */
@Test
public void testRefreshNodes() throws Exception {
    resourceManager.getClientRMService();
    RefreshNodesRequest request = RefreshNodesRequest.newInstance(DecommissionType.NORMAL);
    RefreshNodesResponse response = client.refreshNodes(request);
    assertNotNull(response);
}
Also used : RefreshNodesRequest(org.apache.hadoop.yarn.server.api.protocolrecords.RefreshNodesRequest) RefreshNodesResponse(org.apache.hadoop.yarn.server.api.protocolrecords.RefreshNodesResponse) Test(org.junit.Test)

Aggregations

RefreshNodesRequest (org.apache.hadoop.yarn.server.api.protocolrecords.RefreshNodesRequest)3 ResourceManagerAdministrationProtocol (org.apache.hadoop.yarn.server.api.ResourceManagerAdministrationProtocol)2 NodeId (org.apache.hadoop.yarn.api.records.NodeId)1 CheckForDecommissioningNodesRequest (org.apache.hadoop.yarn.server.api.protocolrecords.CheckForDecommissioningNodesRequest)1 CheckForDecommissioningNodesResponse (org.apache.hadoop.yarn.server.api.protocolrecords.CheckForDecommissioningNodesResponse)1 RefreshNodesResponse (org.apache.hadoop.yarn.server.api.protocolrecords.RefreshNodesResponse)1 Test (org.junit.Test)1