|
@@ -36,6 +36,7 @@ import org.apache.hadoop.yarn.api.records.ContainerId;
|
|
import org.apache.hadoop.yarn.api.records.ContainerState;
|
|
import org.apache.hadoop.yarn.api.records.ContainerState;
|
|
import org.apache.hadoop.yarn.api.records.ContainerStatus;
|
|
import org.apache.hadoop.yarn.api.records.ContainerStatus;
|
|
import org.apache.hadoop.yarn.api.records.Resource;
|
|
import org.apache.hadoop.yarn.api.records.Resource;
|
|
|
|
+import org.apache.hadoop.yarn.api.records.ResourceUtilization;
|
|
import org.apache.hadoop.yarn.exceptions.YarnException;
|
|
import org.apache.hadoop.yarn.exceptions.YarnException;
|
|
import org.apache.hadoop.yarn.server.api.protocolrecords.NodeHeartbeatRequest;
|
|
import org.apache.hadoop.yarn.server.api.protocolrecords.NodeHeartbeatRequest;
|
|
import org.apache.hadoop.yarn.server.api.protocolrecords.NodeHeartbeatResponse;
|
|
import org.apache.hadoop.yarn.server.api.protocolrecords.NodeHeartbeatResponse;
|
|
@@ -72,18 +73,20 @@ public class NMSimulator extends TaskRunner.Task {
|
|
private ResourceManager rm;
|
|
private ResourceManager rm;
|
|
// heart beat response id
|
|
// heart beat response id
|
|
private int responseId = 0;
|
|
private int responseId = 0;
|
|
|
|
+ private float resourceUtilizationRatio;
|
|
private final static Logger LOG = LoggerFactory.getLogger(NMSimulator.class);
|
|
private final static Logger LOG = LoggerFactory.getLogger(NMSimulator.class);
|
|
|
|
|
|
- public void init(String nodeIdStr, Resource nodeResource,
|
|
|
|
- int dispatchTime, int heartBeatInterval, ResourceManager rm)
|
|
|
|
- throws IOException, YarnException {
|
|
|
|
|
|
+ public void init(String nodeIdStr, Resource nodeResource, int dispatchTime,
|
|
|
|
+ int heartBeatInterval, ResourceManager pRm,
|
|
|
|
+ float pResourceUtilizationRatio)
|
|
|
|
+ throws IOException, YarnException {
|
|
super.init(dispatchTime, dispatchTime + 1000000L * heartBeatInterval,
|
|
super.init(dispatchTime, dispatchTime + 1000000L * heartBeatInterval,
|
|
- heartBeatInterval);
|
|
|
|
|
|
+ heartBeatInterval);
|
|
// create resource
|
|
// create resource
|
|
String rackHostName[] = SLSUtils.getRackHostName(nodeIdStr);
|
|
String rackHostName[] = SLSUtils.getRackHostName(nodeIdStr);
|
|
this.node = NodeInfo.newNodeInfo(rackHostName[0], rackHostName[1],
|
|
this.node = NodeInfo.newNodeInfo(rackHostName[0], rackHostName[1],
|
|
Resources.clone(nodeResource));
|
|
Resources.clone(nodeResource));
|
|
- this.rm = rm;
|
|
|
|
|
|
+ this.rm = pRm;
|
|
// init data structures
|
|
// init data structures
|
|
completedContainerList =
|
|
completedContainerList =
|
|
Collections.synchronizedList(new ArrayList<ContainerId>());
|
|
Collections.synchronizedList(new ArrayList<ContainerId>());
|
|
@@ -100,9 +103,10 @@ public class NMSimulator extends TaskRunner.Task {
|
|
req.setNodeId(node.getNodeID());
|
|
req.setNodeId(node.getNodeID());
|
|
req.setResource(node.getTotalCapability());
|
|
req.setResource(node.getTotalCapability());
|
|
req.setHttpPort(80);
|
|
req.setHttpPort(80);
|
|
- RegisterNodeManagerResponse response = rm.getResourceTrackerService()
|
|
|
|
|
|
+ RegisterNodeManagerResponse response = this.rm.getResourceTrackerService()
|
|
.registerNodeManager(req);
|
|
.registerNodeManager(req);
|
|
masterKey = response.getNMTokenMasterKey();
|
|
masterKey = response.getNMTokenMasterKey();
|
|
|
|
+ this.resourceUtilizationRatio = pResourceUtilizationRatio;
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
@@ -133,6 +137,18 @@ public class NMSimulator extends TaskRunner.Task {
|
|
ns.setKeepAliveApplications(new ArrayList<ApplicationId>());
|
|
ns.setKeepAliveApplications(new ArrayList<ApplicationId>());
|
|
ns.setResponseId(responseId++);
|
|
ns.setResponseId(responseId++);
|
|
ns.setNodeHealthStatus(NodeHealthStatus.newInstance(true, "", 0));
|
|
ns.setNodeHealthStatus(NodeHealthStatus.newInstance(true, "", 0));
|
|
|
|
+
|
|
|
|
+ //set node & containers utilization
|
|
|
|
+ if (resourceUtilizationRatio > 0 && resourceUtilizationRatio <=1) {
|
|
|
|
+ int pMemUsed = Math.round(node.getTotalCapability().getMemorySize()
|
|
|
|
+ * resourceUtilizationRatio);
|
|
|
|
+ float cpuUsed = node.getTotalCapability().getVirtualCores()
|
|
|
|
+ * resourceUtilizationRatio;
|
|
|
|
+ ResourceUtilization resourceUtilization = ResourceUtilization.newInstance(
|
|
|
|
+ pMemUsed, pMemUsed, cpuUsed);
|
|
|
|
+ ns.setContainersUtilization(resourceUtilization);
|
|
|
|
+ ns.setNodeUtilization(resourceUtilization);
|
|
|
|
+ }
|
|
beatRequest.setNodeStatus(ns);
|
|
beatRequest.setNodeStatus(ns);
|
|
NodeHeartbeatResponse beatResponse =
|
|
NodeHeartbeatResponse beatResponse =
|
|
rm.getResourceTrackerService().nodeHeartbeat(beatRequest);
|
|
rm.getResourceTrackerService().nodeHeartbeat(beatRequest);
|