YARN-2072. RM/NM UIs and webservices are missing vcore information. (Nathan Roberts via tgraves)
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1605162 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
fdbff67856
commit
1f9a0fd927
|
@ -183,6 +183,9 @@ Release 2.5.0 - UNRELEASED
|
||||||
|
|
||||||
YARN-2109. Fix TestRM to work with both schedulers. (Anubhav Dhoot via kasha)
|
YARN-2109. Fix TestRM to work with both schedulers. (Anubhav Dhoot via kasha)
|
||||||
|
|
||||||
|
YARN-2072. RM/NM UIs and webservices are missing vcore information.
|
||||||
|
(Nathan Roberts via tgraves)
|
||||||
|
|
||||||
OPTIMIZATIONS
|
OPTIMIZATIONS
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
|
|
|
@ -27,4 +27,6 @@ public interface ResourceView {
|
||||||
long getPmemAllocatedForContainers();
|
long getPmemAllocatedForContainers();
|
||||||
|
|
||||||
boolean isPmemCheckEnabled();
|
boolean isPmemCheckEnabled();
|
||||||
|
|
||||||
|
long getVCoresAllocatedForContainers();
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,6 +70,8 @@ public class ContainersMonitorImpl extends AbstractService implements
|
||||||
private boolean pmemCheckEnabled;
|
private boolean pmemCheckEnabled;
|
||||||
private boolean vmemCheckEnabled;
|
private boolean vmemCheckEnabled;
|
||||||
|
|
||||||
|
private long maxVCoresAllottedForContainers;
|
||||||
|
|
||||||
private static final long UNKNOWN_MEMORY_LIMIT = -1L;
|
private static final long UNKNOWN_MEMORY_LIMIT = -1L;
|
||||||
|
|
||||||
public ContainersMonitorImpl(ContainerExecutor exec,
|
public ContainersMonitorImpl(ContainerExecutor exec,
|
||||||
|
@ -108,10 +110,16 @@ public class ContainersMonitorImpl extends AbstractService implements
|
||||||
YarnConfiguration.NM_PMEM_MB,
|
YarnConfiguration.NM_PMEM_MB,
|
||||||
YarnConfiguration.DEFAULT_NM_PMEM_MB) * 1024 * 1024l;
|
YarnConfiguration.DEFAULT_NM_PMEM_MB) * 1024 * 1024l;
|
||||||
|
|
||||||
|
long configuredVCoresForContainers = conf.getLong(
|
||||||
|
YarnConfiguration.NM_VCORES,
|
||||||
|
YarnConfiguration.DEFAULT_NM_VCORES);
|
||||||
|
|
||||||
|
|
||||||
// Setting these irrespective of whether checks are enabled. Required in
|
// Setting these irrespective of whether checks are enabled. Required in
|
||||||
// the UI.
|
// the UI.
|
||||||
// ///////// Physical memory configuration //////
|
// ///////// Physical memory configuration //////
|
||||||
this.maxPmemAllottedForContainers = configuredPMemForContainers;
|
this.maxPmemAllottedForContainers = configuredPMemForContainers;
|
||||||
|
this.maxVCoresAllottedForContainers = configuredVCoresForContainers;
|
||||||
|
|
||||||
// ///////// Virtual memory configuration //////
|
// ///////// Virtual memory configuration //////
|
||||||
float vmemRatio = conf.getFloat(YarnConfiguration.NM_VMEM_PMEM_RATIO,
|
float vmemRatio = conf.getFloat(YarnConfiguration.NM_VMEM_PMEM_RATIO,
|
||||||
|
@ -518,6 +526,11 @@ public class ContainersMonitorImpl extends AbstractService implements
|
||||||
return this.maxPmemAllottedForContainers;
|
return this.maxPmemAllottedForContainers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getVCoresAllocatedForContainers() {
|
||||||
|
return this.maxVCoresAllottedForContainers;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is the total virtual memory check enabled?
|
* Is the total virtual memory check enabled?
|
||||||
*
|
*
|
||||||
|
|
|
@ -40,6 +40,9 @@ public class NodeManagerMetrics {
|
||||||
@Metric("Current # of allocated containers")
|
@Metric("Current # of allocated containers")
|
||||||
MutableGaugeInt allocatedContainers;
|
MutableGaugeInt allocatedContainers;
|
||||||
@Metric MutableGaugeInt availableGB;
|
@Metric MutableGaugeInt availableGB;
|
||||||
|
@Metric("Current allocated Virtual Cores")
|
||||||
|
MutableGaugeInt allocatedVCores;
|
||||||
|
@Metric MutableGaugeInt availableVCores;
|
||||||
|
|
||||||
public static NodeManagerMetrics create() {
|
public static NodeManagerMetrics create() {
|
||||||
return create(DefaultMetricsSystem.instance());
|
return create(DefaultMetricsSystem.instance());
|
||||||
|
@ -88,16 +91,21 @@ public class NodeManagerMetrics {
|
||||||
allocatedContainers.incr();
|
allocatedContainers.incr();
|
||||||
allocatedGB.incr(res.getMemory() / 1024);
|
allocatedGB.incr(res.getMemory() / 1024);
|
||||||
availableGB.decr(res.getMemory() / 1024);
|
availableGB.decr(res.getMemory() / 1024);
|
||||||
|
allocatedVCores.incr(res.getVirtualCores());
|
||||||
|
availableVCores.decr(res.getVirtualCores());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void releaseContainer(Resource res) {
|
public void releaseContainer(Resource res) {
|
||||||
allocatedContainers.decr();
|
allocatedContainers.decr();
|
||||||
allocatedGB.decr(res.getMemory() / 1024);
|
allocatedGB.decr(res.getMemory() / 1024);
|
||||||
availableGB.incr(res.getMemory() / 1024);
|
availableGB.incr(res.getMemory() / 1024);
|
||||||
|
allocatedVCores.decr(res.getVirtualCores());
|
||||||
|
availableVCores.incr(res.getVirtualCores());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addResource(Resource res) {
|
public void addResource(Resource res) {
|
||||||
availableGB.incr(res.getMemory() / 1024);
|
availableGB.incr(res.getMemory() / 1024);
|
||||||
|
availableVCores.incr(res.getVirtualCores());
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getRunningContainers() {
|
public int getRunningContainers() {
|
||||||
|
|
|
@ -85,6 +85,7 @@ public class ContainerPage extends NMView implements YarnWebParams {
|
||||||
._("Diagnostics", info.getDiagnostics())
|
._("Diagnostics", info.getDiagnostics())
|
||||||
._("User", info.getUser())
|
._("User", info.getUser())
|
||||||
._("TotalMemoryNeeded", info.getMemoryNeeded())
|
._("TotalMemoryNeeded", info.getMemoryNeeded())
|
||||||
|
._("TotalVCoresNeeded", info.getVCoresNeeded())
|
||||||
._("logs", info.getShortLogLink(), "Link to logs");
|
._("logs", info.getShortLogLink(), "Link to logs");
|
||||||
html._(InfoBlock.class);
|
html._(InfoBlock.class);
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,6 +73,8 @@ public class NodePage extends NMView {
|
||||||
StringUtils.byteDesc(info.getTotalPmemAllocated() * BYTES_IN_MB))
|
StringUtils.byteDesc(info.getTotalPmemAllocated() * BYTES_IN_MB))
|
||||||
._("Pmem enforcement enabled",
|
._("Pmem enforcement enabled",
|
||||||
info.isVmemCheckEnabled())
|
info.isVmemCheckEnabled())
|
||||||
|
._("Total VCores allocated for Containers",
|
||||||
|
String.valueOf(info.getTotalVCoresAllocated()))
|
||||||
._("NodeHealthyStatus",
|
._("NodeHealthyStatus",
|
||||||
info.getHealthStatus())
|
info.getHealthStatus())
|
||||||
._("LastNodeHealthTime", new Date(
|
._("LastNodeHealthTime", new Date(
|
||||||
|
|
|
@ -42,6 +42,7 @@ public class ContainerInfo {
|
||||||
protected String diagnostics;
|
protected String diagnostics;
|
||||||
protected String user;
|
protected String user;
|
||||||
protected long totalMemoryNeededMB;
|
protected long totalMemoryNeededMB;
|
||||||
|
protected long totalVCoresNeeded;
|
||||||
protected String containerLogsLink;
|
protected String containerLogsLink;
|
||||||
protected String nodeId;
|
protected String nodeId;
|
||||||
@XmlTransient
|
@XmlTransient
|
||||||
|
@ -76,6 +77,7 @@ public class ContainerInfo {
|
||||||
Resource res = container.getResource();
|
Resource res = container.getResource();
|
||||||
if (res != null) {
|
if (res != null) {
|
||||||
this.totalMemoryNeededMB = res.getMemory();
|
this.totalMemoryNeededMB = res.getMemory();
|
||||||
|
this.totalVCoresNeeded = res.getVirtualCores();
|
||||||
}
|
}
|
||||||
this.containerLogsShortLink = ujoin("containerlogs", this.id,
|
this.containerLogsShortLink = ujoin("containerlogs", this.id,
|
||||||
container.getUser());
|
container.getUser());
|
||||||
|
@ -130,4 +132,8 @@ public class ContainerInfo {
|
||||||
return this.totalMemoryNeededMB;
|
return this.totalMemoryNeededMB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getVCoresNeeded() {
|
||||||
|
return this.totalVCoresNeeded;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@ public class NodeInfo {
|
||||||
protected String healthReport;
|
protected String healthReport;
|
||||||
protected long totalVmemAllocatedContainersMB;
|
protected long totalVmemAllocatedContainersMB;
|
||||||
protected long totalPmemAllocatedContainersMB;
|
protected long totalPmemAllocatedContainersMB;
|
||||||
|
protected long totalVCoresAllocatedContainers;
|
||||||
protected boolean vmemCheckEnabled;
|
protected boolean vmemCheckEnabled;
|
||||||
protected boolean pmemCheckEnabled;
|
protected boolean pmemCheckEnabled;
|
||||||
protected long lastNodeUpdateTime;
|
protected long lastNodeUpdateTime;
|
||||||
|
@ -62,6 +63,8 @@ public class NodeInfo {
|
||||||
this.totalPmemAllocatedContainersMB = resourceView
|
this.totalPmemAllocatedContainersMB = resourceView
|
||||||
.getPmemAllocatedForContainers() / BYTES_IN_MB;
|
.getPmemAllocatedForContainers() / BYTES_IN_MB;
|
||||||
this.pmemCheckEnabled = resourceView.isPmemCheckEnabled();
|
this.pmemCheckEnabled = resourceView.isPmemCheckEnabled();
|
||||||
|
this.totalVCoresAllocatedContainers = resourceView
|
||||||
|
.getVCoresAllocatedForContainers();
|
||||||
this.nodeHealthy = context.getNodeHealthStatus().getIsNodeHealthy();
|
this.nodeHealthy = context.getNodeHealthStatus().getIsNodeHealthy();
|
||||||
this.lastNodeUpdateTime = context.getNodeHealthStatus()
|
this.lastNodeUpdateTime = context.getNodeHealthStatus()
|
||||||
.getLastHealthReportTime();
|
.getLastHealthReportTime();
|
||||||
|
@ -124,6 +127,10 @@ public class NodeInfo {
|
||||||
return this.totalVmemAllocatedContainersMB;
|
return this.totalVmemAllocatedContainersMB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getTotalVCoresAllocated() {
|
||||||
|
return this.totalVCoresAllocatedContainers;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isVmemCheckEnabled() {
|
public boolean isVmemCheckEnabled() {
|
||||||
return this.vmemCheckEnabled;
|
return this.vmemCheckEnabled;
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,11 @@ public class TestNodeManagerMetrics {
|
||||||
NodeManagerMetrics metrics = NodeManagerMetrics.create();
|
NodeManagerMetrics metrics = NodeManagerMetrics.create();
|
||||||
Resource total = Records.newRecord(Resource.class);
|
Resource total = Records.newRecord(Resource.class);
|
||||||
total.setMemory(8*GiB);
|
total.setMemory(8*GiB);
|
||||||
|
total.setVirtualCores(16);
|
||||||
Resource resource = Records.newRecord(Resource.class);
|
Resource resource = Records.newRecord(Resource.class);
|
||||||
resource.setMemory(1*GiB);
|
resource.setMemory(1*GiB);
|
||||||
|
resource.setVirtualCores(2);
|
||||||
|
|
||||||
|
|
||||||
metrics.addResource(total);
|
metrics.addResource(total);
|
||||||
|
|
||||||
|
@ -57,12 +60,12 @@ public class TestNodeManagerMetrics {
|
||||||
metrics.initingContainer();
|
metrics.initingContainer();
|
||||||
metrics.runningContainer();
|
metrics.runningContainer();
|
||||||
|
|
||||||
checkMetrics(5, 1, 1, 1, 1, 1, 2, 2, 6);
|
checkMetrics(5, 1, 1, 1, 1, 1, 2, 2, 6, 4, 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkMetrics(int launched, int completed, int failed, int killed,
|
private void checkMetrics(int launched, int completed, int failed, int killed,
|
||||||
int initing, int running, int allocatedGB,
|
int initing, int running, int allocatedGB,
|
||||||
int allocatedContainers, int availableGB) {
|
int allocatedContainers, int availableGB, int allocatedVCores, int availableVCores) {
|
||||||
MetricsRecordBuilder rb = getMetrics("NodeManagerMetrics");
|
MetricsRecordBuilder rb = getMetrics("NodeManagerMetrics");
|
||||||
assertCounter("ContainersLaunched", launched, rb);
|
assertCounter("ContainersLaunched", launched, rb);
|
||||||
assertCounter("ContainersCompleted", completed, rb);
|
assertCounter("ContainersCompleted", completed, rb);
|
||||||
|
@ -71,7 +74,10 @@ public class TestNodeManagerMetrics {
|
||||||
assertGauge("ContainersIniting", initing, rb);
|
assertGauge("ContainersIniting", initing, rb);
|
||||||
assertGauge("ContainersRunning", running, rb);
|
assertGauge("ContainersRunning", running, rb);
|
||||||
assertGauge("AllocatedGB", allocatedGB, rb);
|
assertGauge("AllocatedGB", allocatedGB, rb);
|
||||||
|
assertGauge("AllocatedVCores", allocatedVCores, rb);
|
||||||
assertGauge("AllocatedContainers", allocatedContainers, rb);
|
assertGauge("AllocatedContainers", allocatedContainers, rb);
|
||||||
assertGauge("AvailableGB", availableGB, rb);
|
assertGauge("AvailableGB", availableGB, rb);
|
||||||
|
assertGauge("AvailableVCores",availableVCores, rb);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -91,6 +91,10 @@ public class TestNMWebServer {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
|
public long getVCoresAllocatedForContainers() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
public boolean isVmemCheckEnabled() {
|
public boolean isVmemCheckEnabled() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -150,6 +154,10 @@ public class TestNMWebServer {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
|
public long getVCoresAllocatedForContainers() {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
public boolean isVmemCheckEnabled() {
|
public boolean isVmemCheckEnabled() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,6 +124,10 @@ public class TestNMWebServices extends JerseyTest {
|
||||||
return new Long("17179869184");
|
return new Long("17179869184");
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
|
public long getVCoresAllocatedForContainers() {
|
||||||
|
return new Long("4000");
|
||||||
|
}
|
||||||
|
@Override
|
||||||
public boolean isVmemCheckEnabled() {
|
public boolean isVmemCheckEnabled() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -375,6 +379,8 @@ public class TestNMWebServices extends JerseyTest {
|
||||||
"totalVmemAllocatedContainersMB"),
|
"totalVmemAllocatedContainersMB"),
|
||||||
WebServicesTestUtils.getXmlLong(element,
|
WebServicesTestUtils.getXmlLong(element,
|
||||||
"totalPmemAllocatedContainersMB"),
|
"totalPmemAllocatedContainersMB"),
|
||||||
|
WebServicesTestUtils.getXmlLong(element,
|
||||||
|
"totalVCoresAllocatedContainers"),
|
||||||
WebServicesTestUtils.getXmlBoolean(element, "vmemCheckEnabled"),
|
WebServicesTestUtils.getXmlBoolean(element, "vmemCheckEnabled"),
|
||||||
WebServicesTestUtils.getXmlBoolean(element, "pmemCheckEnabled"),
|
WebServicesTestUtils.getXmlBoolean(element, "pmemCheckEnabled"),
|
||||||
WebServicesTestUtils.getXmlLong(element, "lastNodeUpdateTime"),
|
WebServicesTestUtils.getXmlLong(element, "lastNodeUpdateTime"),
|
||||||
|
@ -393,10 +399,11 @@ public class TestNMWebServices extends JerseyTest {
|
||||||
public void verifyNodeInfo(JSONObject json) throws JSONException, Exception {
|
public void verifyNodeInfo(JSONObject json) throws JSONException, Exception {
|
||||||
assertEquals("incorrect number of elements", 1, json.length());
|
assertEquals("incorrect number of elements", 1, json.length());
|
||||||
JSONObject info = json.getJSONObject("nodeInfo");
|
JSONObject info = json.getJSONObject("nodeInfo");
|
||||||
assertEquals("incorrect number of elements", 15, info.length());
|
assertEquals("incorrect number of elements", 16, info.length());
|
||||||
verifyNodeInfoGeneric(info.getString("id"), info.getString("healthReport"),
|
verifyNodeInfoGeneric(info.getString("id"), info.getString("healthReport"),
|
||||||
info.getLong("totalVmemAllocatedContainersMB"),
|
info.getLong("totalVmemAllocatedContainersMB"),
|
||||||
info.getLong("totalPmemAllocatedContainersMB"),
|
info.getLong("totalPmemAllocatedContainersMB"),
|
||||||
|
info.getLong("totalVCoresAllocatedContainers"),
|
||||||
info.getBoolean("vmemCheckEnabled"),
|
info.getBoolean("vmemCheckEnabled"),
|
||||||
info.getBoolean("pmemCheckEnabled"),
|
info.getBoolean("pmemCheckEnabled"),
|
||||||
info.getLong("lastNodeUpdateTime"), info.getBoolean("nodeHealthy"),
|
info.getLong("lastNodeUpdateTime"), info.getBoolean("nodeHealthy"),
|
||||||
|
@ -410,6 +417,7 @@ public class TestNMWebServices extends JerseyTest {
|
||||||
|
|
||||||
public void verifyNodeInfoGeneric(String id, String healthReport,
|
public void verifyNodeInfoGeneric(String id, String healthReport,
|
||||||
long totalVmemAllocatedContainersMB, long totalPmemAllocatedContainersMB,
|
long totalVmemAllocatedContainersMB, long totalPmemAllocatedContainersMB,
|
||||||
|
long totalVCoresAllocatedContainers,
|
||||||
boolean vmemCheckEnabled, boolean pmemCheckEnabled,
|
boolean vmemCheckEnabled, boolean pmemCheckEnabled,
|
||||||
long lastNodeUpdateTime, Boolean nodeHealthy, String nodeHostName,
|
long lastNodeUpdateTime, Boolean nodeHealthy, String nodeHostName,
|
||||||
String hadoopVersionBuiltOn, String hadoopBuildVersion,
|
String hadoopVersionBuiltOn, String hadoopBuildVersion,
|
||||||
|
@ -423,6 +431,8 @@ public class TestNMWebServices extends JerseyTest {
|
||||||
totalVmemAllocatedContainersMB);
|
totalVmemAllocatedContainersMB);
|
||||||
assertEquals("totalPmemAllocatedContainersMB incorrect", 16384,
|
assertEquals("totalPmemAllocatedContainersMB incorrect", 16384,
|
||||||
totalPmemAllocatedContainersMB);
|
totalPmemAllocatedContainersMB);
|
||||||
|
assertEquals("totalVCoresAllocatedContainers incorrect", 4000,
|
||||||
|
totalVCoresAllocatedContainers);
|
||||||
assertEquals("vmemCheckEnabled incorrect", true, vmemCheckEnabled);
|
assertEquals("vmemCheckEnabled incorrect", true, vmemCheckEnabled);
|
||||||
assertEquals("pmemCheckEnabled incorrect", true, pmemCheckEnabled);
|
assertEquals("pmemCheckEnabled incorrect", true, pmemCheckEnabled);
|
||||||
assertTrue("lastNodeUpdateTime incorrect", lastNodeUpdateTime == nmContext
|
assertTrue("lastNodeUpdateTime incorrect", lastNodeUpdateTime == nmContext
|
||||||
|
|
|
@ -116,6 +116,12 @@ public class TestNMWebServicesApps extends JerseyTest {
|
||||||
return new Long("17179869184");
|
return new Long("17179869184");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getVCoresAllocatedForContainers() {
|
||||||
|
return new Long("4000");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isVmemCheckEnabled() {
|
public boolean isVmemCheckEnabled() {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -106,6 +106,11 @@ public class TestNMWebServicesContainers extends JerseyTest {
|
||||||
return new Long("17179869184");
|
return new Long("17179869184");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getVCoresAllocatedForContainers() {
|
||||||
|
return new Long("4000");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isVmemCheckEnabled() {
|
public boolean isVmemCheckEnabled() {
|
||||||
return true;
|
return true;
|
||||||
|
@ -461,24 +466,27 @@ public class TestNMWebServicesContainers extends JerseyTest {
|
||||||
WebServicesTestUtils.getXmlString(element, "diagnostics"),
|
WebServicesTestUtils.getXmlString(element, "diagnostics"),
|
||||||
WebServicesTestUtils.getXmlString(element, "nodeId"),
|
WebServicesTestUtils.getXmlString(element, "nodeId"),
|
||||||
WebServicesTestUtils.getXmlInt(element, "totalMemoryNeededMB"),
|
WebServicesTestUtils.getXmlInt(element, "totalMemoryNeededMB"),
|
||||||
|
WebServicesTestUtils.getXmlInt(element, "totalVCoresNeeded"),
|
||||||
WebServicesTestUtils.getXmlString(element, "containerLogsLink"));
|
WebServicesTestUtils.getXmlString(element, "containerLogsLink"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void verifyNodeContainerInfo(JSONObject info, Container cont)
|
public void verifyNodeContainerInfo(JSONObject info, Container cont)
|
||||||
throws JSONException, Exception {
|
throws JSONException, Exception {
|
||||||
assertEquals("incorrect number of elements", 8, info.length());
|
assertEquals("incorrect number of elements", 9, info.length());
|
||||||
|
|
||||||
verifyNodeContainerInfoGeneric(cont, info.getString("id"),
|
verifyNodeContainerInfoGeneric(cont, info.getString("id"),
|
||||||
info.getString("state"), info.getString("user"),
|
info.getString("state"), info.getString("user"),
|
||||||
info.getInt("exitCode"), info.getString("diagnostics"),
|
info.getInt("exitCode"), info.getString("diagnostics"),
|
||||||
info.getString("nodeId"), info.getInt("totalMemoryNeededMB"),
|
info.getString("nodeId"), info.getInt("totalMemoryNeededMB"),
|
||||||
|
info.getInt("totalVCoresNeeded"),
|
||||||
info.getString("containerLogsLink"));
|
info.getString("containerLogsLink"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void verifyNodeContainerInfoGeneric(Container cont, String id,
|
public void verifyNodeContainerInfoGeneric(Container cont, String id,
|
||||||
String state, String user, int exitCode, String diagnostics,
|
String state, String user, int exitCode, String diagnostics,
|
||||||
String nodeId, int totalMemoryNeededMB, String logsLink)
|
String nodeId, int totalMemoryNeededMB, int totalVCoresNeeded,
|
||||||
|
String logsLink)
|
||||||
throws JSONException, Exception {
|
throws JSONException, Exception {
|
||||||
WebServicesTestUtils.checkStringMatch("id", cont.getContainerId()
|
WebServicesTestUtils.checkStringMatch("id", cont.getContainerId()
|
||||||
.toString(), id);
|
.toString(), id);
|
||||||
|
@ -495,6 +503,9 @@ public class TestNMWebServicesContainers extends JerseyTest {
|
||||||
assertEquals("totalMemoryNeededMB wrong",
|
assertEquals("totalMemoryNeededMB wrong",
|
||||||
YarnConfiguration.DEFAULT_RM_SCHEDULER_MINIMUM_ALLOCATION_MB,
|
YarnConfiguration.DEFAULT_RM_SCHEDULER_MINIMUM_ALLOCATION_MB,
|
||||||
totalMemoryNeededMB);
|
totalMemoryNeededMB);
|
||||||
|
assertEquals("totalVCoresNeeded wrong",
|
||||||
|
YarnConfiguration.DEFAULT_RM_SCHEDULER_MINIMUM_ALLOCATION_VCORES,
|
||||||
|
totalVCoresNeeded);
|
||||||
String shortLink =
|
String shortLink =
|
||||||
ujoin("containerlogs", cont.getContainerId().toString(),
|
ujoin("containerlogs", cont.getContainerId().toString(),
|
||||||
cont.getUser());
|
cont.getUser());
|
||||||
|
|
|
@ -72,6 +72,9 @@ public class MetricsOverviewTable extends HtmlBlock {
|
||||||
th().$class("ui-state-default")._("Memory Used")._().
|
th().$class("ui-state-default")._("Memory Used")._().
|
||||||
th().$class("ui-state-default")._("Memory Total")._().
|
th().$class("ui-state-default")._("Memory Total")._().
|
||||||
th().$class("ui-state-default")._("Memory Reserved")._().
|
th().$class("ui-state-default")._("Memory Reserved")._().
|
||||||
|
th().$class("ui-state-default")._("VCores Used")._().
|
||||||
|
th().$class("ui-state-default")._("VCores Total")._().
|
||||||
|
th().$class("ui-state-default")._("VCores Reserved")._().
|
||||||
th().$class("ui-state-default")._("Active Nodes")._().
|
th().$class("ui-state-default")._("Active Nodes")._().
|
||||||
th().$class("ui-state-default")._("Decommissioned Nodes")._().
|
th().$class("ui-state-default")._("Decommissioned Nodes")._().
|
||||||
th().$class("ui-state-default")._("Lost Nodes")._().
|
th().$class("ui-state-default")._("Lost Nodes")._().
|
||||||
|
@ -94,6 +97,9 @@ public class MetricsOverviewTable extends HtmlBlock {
|
||||||
td(StringUtils.byteDesc(clusterMetrics.getAllocatedMB() * BYTES_IN_MB)).
|
td(StringUtils.byteDesc(clusterMetrics.getAllocatedMB() * BYTES_IN_MB)).
|
||||||
td(StringUtils.byteDesc(clusterMetrics.getTotalMB() * BYTES_IN_MB)).
|
td(StringUtils.byteDesc(clusterMetrics.getTotalMB() * BYTES_IN_MB)).
|
||||||
td(StringUtils.byteDesc(clusterMetrics.getReservedMB() * BYTES_IN_MB)).
|
td(StringUtils.byteDesc(clusterMetrics.getReservedMB() * BYTES_IN_MB)).
|
||||||
|
td(String.valueOf(clusterMetrics.getAllocatedVirtualCores())).
|
||||||
|
td(String.valueOf(clusterMetrics.getTotalVirtualCores())).
|
||||||
|
td(String.valueOf(clusterMetrics.getReservedVirtualCores())).
|
||||||
td().a(url("nodes"),String.valueOf(clusterMetrics.getActiveNodes()))._().
|
td().a(url("nodes"),String.valueOf(clusterMetrics.getActiveNodes()))._().
|
||||||
td().a(url("nodes/decommissioned"),String.valueOf(clusterMetrics.getDecommissionedNodes()))._().
|
td().a(url("nodes/decommissioned"),String.valueOf(clusterMetrics.getDecommissionedNodes()))._().
|
||||||
td().a(url("nodes/lost"),String.valueOf(clusterMetrics.getLostNodes()))._().
|
td().a(url("nodes/lost"),String.valueOf(clusterMetrics.getLostNodes()))._().
|
||||||
|
@ -120,6 +126,9 @@ public class MetricsOverviewTable extends HtmlBlock {
|
||||||
th().$class("ui-state-default")._("Memory Used")._().
|
th().$class("ui-state-default")._("Memory Used")._().
|
||||||
th().$class("ui-state-default")._("Memory Pending")._().
|
th().$class("ui-state-default")._("Memory Pending")._().
|
||||||
th().$class("ui-state-default")._("Memory Reserved")._().
|
th().$class("ui-state-default")._("Memory Reserved")._().
|
||||||
|
th().$class("ui-state-default")._("VCores Used")._().
|
||||||
|
th().$class("ui-state-default")._("VCores Pending")._().
|
||||||
|
th().$class("ui-state-default")._("VCores Reserved")._().
|
||||||
_().
|
_().
|
||||||
_().
|
_().
|
||||||
tbody().$class("ui-widget-content").
|
tbody().$class("ui-widget-content").
|
||||||
|
@ -139,6 +148,9 @@ public class MetricsOverviewTable extends HtmlBlock {
|
||||||
td(StringUtils.byteDesc(userMetrics.getAllocatedMB() * BYTES_IN_MB)).
|
td(StringUtils.byteDesc(userMetrics.getAllocatedMB() * BYTES_IN_MB)).
|
||||||
td(StringUtils.byteDesc(userMetrics.getPendingMB() * BYTES_IN_MB)).
|
td(StringUtils.byteDesc(userMetrics.getPendingMB() * BYTES_IN_MB)).
|
||||||
td(StringUtils.byteDesc(userMetrics.getReservedMB() * BYTES_IN_MB)).
|
td(StringUtils.byteDesc(userMetrics.getReservedMB() * BYTES_IN_MB)).
|
||||||
|
td(String.valueOf(userMetrics.getAllocatedVirtualCores())).
|
||||||
|
td(String.valueOf(userMetrics.getPendingVirtualCores())).
|
||||||
|
td(String.valueOf(userMetrics.getReservedVirtualCores())).
|
||||||
_().
|
_().
|
||||||
_()._();
|
_()._();
|
||||||
|
|
||||||
|
|
|
@ -75,6 +75,8 @@ class NodesPage extends RmView {
|
||||||
th(".containers", "Containers").
|
th(".containers", "Containers").
|
||||||
th(".mem", "Mem Used").
|
th(".mem", "Mem Used").
|
||||||
th(".mem", "Mem Avail").
|
th(".mem", "Mem Avail").
|
||||||
|
th(".vcores", "VCores Used").
|
||||||
|
th(".vcores", "VCores Avail").
|
||||||
th(".nodeManagerVersion", "Version").
|
th(".nodeManagerVersion", "Version").
|
||||||
_()._().
|
_()._().
|
||||||
tbody();
|
tbody();
|
||||||
|
@ -127,8 +129,10 @@ class NodesPage extends RmView {
|
||||||
td(String.valueOf(info.getNumContainers())).
|
td(String.valueOf(info.getNumContainers())).
|
||||||
td().br().$title(String.valueOf(usedMemory))._().
|
td().br().$title(String.valueOf(usedMemory))._().
|
||||||
_(StringUtils.byteDesc(usedMemory * BYTES_IN_MB))._().
|
_(StringUtils.byteDesc(usedMemory * BYTES_IN_MB))._().
|
||||||
td().br().$title(String.valueOf(usedMemory))._().
|
td().br().$title(String.valueOf(availableMemory))._().
|
||||||
_(StringUtils.byteDesc(availableMemory * BYTES_IN_MB))._().
|
_(StringUtils.byteDesc(availableMemory * BYTES_IN_MB))._().
|
||||||
|
td(String.valueOf(info.getUsedVirtualCores())).
|
||||||
|
td(String.valueOf(info.getAvailableVirtualCores())).
|
||||||
td(ni.getNodeManagerVersion()).
|
td(ni.getNodeManagerVersion()).
|
||||||
_();
|
_();
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,16 +37,21 @@ public class ClusterMetricsInfo {
|
||||||
protected int appsRunning;
|
protected int appsRunning;
|
||||||
protected int appsFailed;
|
protected int appsFailed;
|
||||||
protected int appsKilled;
|
protected int appsKilled;
|
||||||
|
|
||||||
protected long reservedMB;
|
protected long reservedMB;
|
||||||
protected long availableMB;
|
protected long availableMB;
|
||||||
protected long allocatedMB;
|
protected long allocatedMB;
|
||||||
|
|
||||||
|
protected long reservedVirtualCores;
|
||||||
|
protected long availableVirtualCores;
|
||||||
|
protected long allocatedVirtualCores;
|
||||||
|
|
||||||
protected int containersAllocated;
|
protected int containersAllocated;
|
||||||
protected int containersReserved;
|
protected int containersReserved;
|
||||||
protected int containersPending;
|
protected int containersPending;
|
||||||
|
|
||||||
protected long totalMB;
|
protected long totalMB;
|
||||||
|
protected long totalVirtualCores;
|
||||||
protected int totalNodes;
|
protected int totalNodes;
|
||||||
protected int lostNodes;
|
protected int lostNodes;
|
||||||
protected int unhealthyNodes;
|
protected int unhealthyNodes;
|
||||||
|
@ -68,16 +73,21 @@ public class ClusterMetricsInfo {
|
||||||
this.appsRunning = metrics.getAppsRunning();
|
this.appsRunning = metrics.getAppsRunning();
|
||||||
this.appsFailed = metrics.getAppsFailed();
|
this.appsFailed = metrics.getAppsFailed();
|
||||||
this.appsKilled = metrics.getAppsKilled();
|
this.appsKilled = metrics.getAppsKilled();
|
||||||
|
|
||||||
this.reservedMB = metrics.getReservedMB();
|
this.reservedMB = metrics.getReservedMB();
|
||||||
this.availableMB = metrics.getAvailableMB();
|
this.availableMB = metrics.getAvailableMB();
|
||||||
this.allocatedMB = metrics.getAllocatedMB();
|
this.allocatedMB = metrics.getAllocatedMB();
|
||||||
|
|
||||||
|
this.reservedVirtualCores = metrics.getReservedVirtualCores();
|
||||||
|
this.availableVirtualCores = metrics.getAvailableVirtualCores();
|
||||||
|
this.allocatedVirtualCores = metrics.getAllocatedVirtualCores();
|
||||||
|
|
||||||
this.containersAllocated = metrics.getAllocatedContainers();
|
this.containersAllocated = metrics.getAllocatedContainers();
|
||||||
this.containersPending = metrics.getPendingContainers();
|
this.containersPending = metrics.getPendingContainers();
|
||||||
this.containersReserved = metrics.getReservedContainers();
|
this.containersReserved = metrics.getReservedContainers();
|
||||||
|
|
||||||
this.totalMB = availableMB + allocatedMB;
|
this.totalMB = availableMB + allocatedMB;
|
||||||
|
this.totalVirtualCores = availableVirtualCores + allocatedVirtualCores;
|
||||||
this.activeNodes = clusterMetrics.getNumActiveNMs();
|
this.activeNodes = clusterMetrics.getNumActiveNMs();
|
||||||
this.lostNodes = clusterMetrics.getNumLostNMs();
|
this.lostNodes = clusterMetrics.getNumLostNMs();
|
||||||
this.unhealthyNodes = clusterMetrics.getUnhealthyNMs();
|
this.unhealthyNodes = clusterMetrics.getUnhealthyNMs();
|
||||||
|
@ -123,6 +133,18 @@ public class ClusterMetricsInfo {
|
||||||
return this.allocatedMB;
|
return this.allocatedMB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getReservedVirtualCores() {
|
||||||
|
return this.reservedVirtualCores;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getAvailableVirtualCores() {
|
||||||
|
return this.availableVirtualCores;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getAllocatedVirtualCores() {
|
||||||
|
return this.allocatedVirtualCores;
|
||||||
|
}
|
||||||
|
|
||||||
public int getContainersAllocated() {
|
public int getContainersAllocated() {
|
||||||
return this.containersAllocated;
|
return this.containersAllocated;
|
||||||
}
|
}
|
||||||
|
@ -134,15 +156,19 @@ public class ClusterMetricsInfo {
|
||||||
public int getPendingContainers() {
|
public int getPendingContainers() {
|
||||||
return this.containersPending;
|
return this.containersPending;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getTotalMB() {
|
public long getTotalMB() {
|
||||||
return this.totalMB;
|
return this.totalMB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getTotalVirtualCores() {
|
||||||
|
return this.totalVirtualCores;
|
||||||
|
}
|
||||||
|
|
||||||
public int getTotalNodes() {
|
public int getTotalNodes() {
|
||||||
return this.totalNodes;
|
return this.totalNodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getActiveNodes() {
|
public int getActiveNodes() {
|
||||||
return this.activeNodes;
|
return this.activeNodes;
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,8 @@ public class NodeInfo {
|
||||||
protected int numContainers;
|
protected int numContainers;
|
||||||
protected long usedMemoryMB;
|
protected long usedMemoryMB;
|
||||||
protected long availMemoryMB;
|
protected long availMemoryMB;
|
||||||
|
protected long usedVirtualCores;
|
||||||
|
protected long availableVirtualCores;
|
||||||
|
|
||||||
public NodeInfo() {
|
public NodeInfo() {
|
||||||
} // JAXB needs this
|
} // JAXB needs this
|
||||||
|
@ -57,6 +59,8 @@ public class NodeInfo {
|
||||||
this.numContainers = report.getNumContainers();
|
this.numContainers = report.getNumContainers();
|
||||||
this.usedMemoryMB = report.getUsedResource().getMemory();
|
this.usedMemoryMB = report.getUsedResource().getMemory();
|
||||||
this.availMemoryMB = report.getAvailableResource().getMemory();
|
this.availMemoryMB = report.getAvailableResource().getMemory();
|
||||||
|
this.usedVirtualCores = report.getUsedResource().getVirtualCores();
|
||||||
|
this.availableVirtualCores = report.getAvailableResource().getVirtualCores();
|
||||||
}
|
}
|
||||||
this.id = id.toString();
|
this.id = id.toString();
|
||||||
this.rack = ni.getRackName();
|
this.rack = ni.getRackName();
|
||||||
|
@ -83,7 +87,7 @@ public class NodeInfo {
|
||||||
public String getNodeHTTPAddress() {
|
public String getNodeHTTPAddress() {
|
||||||
return this.nodeHTTPAddress;
|
return this.nodeHTTPAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setNodeHTTPAddress(String nodeHTTPAddress) {
|
public void setNodeHTTPAddress(String nodeHTTPAddress) {
|
||||||
this.nodeHTTPAddress = nodeHTTPAddress;
|
this.nodeHTTPAddress = nodeHTTPAddress;
|
||||||
}
|
}
|
||||||
|
@ -112,4 +116,12 @@ public class NodeInfo {
|
||||||
return this.availMemoryMB;
|
return this.availMemoryMB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getUsedVirtualCores() {
|
||||||
|
return this.usedVirtualCores;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getAvailableVirtualCores() {
|
||||||
|
return this.availableVirtualCores;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,9 @@ public class UserMetricsInfo {
|
||||||
protected long reservedMB;
|
protected long reservedMB;
|
||||||
protected long pendingMB;
|
protected long pendingMB;
|
||||||
protected long allocatedMB;
|
protected long allocatedMB;
|
||||||
|
protected long reservedVirtualCores;
|
||||||
|
protected long pendingVirtualCores;
|
||||||
|
protected long allocatedVirtualCores;
|
||||||
|
|
||||||
@XmlTransient
|
@XmlTransient
|
||||||
protected boolean userMetricsAvailable;
|
protected boolean userMetricsAvailable;
|
||||||
|
@ -59,7 +62,7 @@ public class UserMetricsInfo {
|
||||||
|
|
||||||
if (userMetrics != null) {
|
if (userMetrics != null) {
|
||||||
this.userMetricsAvailable = true;
|
this.userMetricsAvailable = true;
|
||||||
|
|
||||||
this.appsSubmitted = userMetrics.getAppsSubmitted();
|
this.appsSubmitted = userMetrics.getAppsSubmitted();
|
||||||
this.appsCompleted = metrics.getAppsCompleted();
|
this.appsCompleted = metrics.getAppsCompleted();
|
||||||
this.appsPending = metrics.getAppsPending();
|
this.appsPending = metrics.getAppsPending();
|
||||||
|
@ -70,10 +73,14 @@ public class UserMetricsInfo {
|
||||||
this.runningContainers = userMetrics.getAllocatedContainers();
|
this.runningContainers = userMetrics.getAllocatedContainers();
|
||||||
this.pendingContainers = userMetrics.getPendingContainers();
|
this.pendingContainers = userMetrics.getPendingContainers();
|
||||||
this.reservedContainers = userMetrics.getReservedContainers();
|
this.reservedContainers = userMetrics.getReservedContainers();
|
||||||
|
|
||||||
this.reservedMB = userMetrics.getReservedMB();
|
this.reservedMB = userMetrics.getReservedMB();
|
||||||
this.pendingMB = userMetrics.getPendingMB();
|
this.pendingMB = userMetrics.getPendingMB();
|
||||||
this.allocatedMB = userMetrics.getAllocatedMB();
|
this.allocatedMB = userMetrics.getAllocatedMB();
|
||||||
|
|
||||||
|
this.reservedVirtualCores = userMetrics.getReservedVirtualCores();
|
||||||
|
this.pendingVirtualCores = userMetrics.getPendingVirtualCores();
|
||||||
|
this.allocatedVirtualCores = userMetrics.getAllocatedVirtualCores();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,6 +124,18 @@ public class UserMetricsInfo {
|
||||||
return this.pendingMB;
|
return this.pendingMB;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public long getReservedVirtualCores() {
|
||||||
|
return this.reservedVirtualCores;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getAllocatedVirtualCores() {
|
||||||
|
return this.allocatedVirtualCores;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getPendingVirtualCores() {
|
||||||
|
return this.pendingVirtualCores;
|
||||||
|
}
|
||||||
|
|
||||||
public int getReservedContainers() {
|
public int getReservedContainers() {
|
||||||
return this.reservedContainers;
|
return this.reservedContainers;
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,8 +48,8 @@ public class TestNodesPage {
|
||||||
|
|
||||||
// Number of Actual Table Headers for NodesPage.NodesBlock might change in
|
// Number of Actual Table Headers for NodesPage.NodesBlock might change in
|
||||||
// future. In that case this value should be adjusted to the new value.
|
// future. In that case this value should be adjusted to the new value.
|
||||||
final int numberOfThInMetricsTable = 13;
|
final int numberOfThInMetricsTable = 16;
|
||||||
final int numberOfActualTableHeaders = 10;
|
final int numberOfActualTableHeaders = 12;
|
||||||
|
|
||||||
private Injector injector;
|
private Injector injector;
|
||||||
|
|
||||||
|
|
|
@ -389,6 +389,10 @@ public class TestRMWebServices extends JerseyTest {
|
||||||
WebServicesTestUtils.getXmlInt(element, "reservedMB"),
|
WebServicesTestUtils.getXmlInt(element, "reservedMB"),
|
||||||
WebServicesTestUtils.getXmlInt(element, "availableMB"),
|
WebServicesTestUtils.getXmlInt(element, "availableMB"),
|
||||||
WebServicesTestUtils.getXmlInt(element, "allocatedMB"),
|
WebServicesTestUtils.getXmlInt(element, "allocatedMB"),
|
||||||
|
WebServicesTestUtils.getXmlInt(element, "reservedVirtualCores"),
|
||||||
|
WebServicesTestUtils.getXmlInt(element, "availableVirtualCores"),
|
||||||
|
WebServicesTestUtils.getXmlInt(element, "allocatedVirtualCores"),
|
||||||
|
WebServicesTestUtils.getXmlInt(element, "totalVirtualCores"),
|
||||||
WebServicesTestUtils.getXmlInt(element, "containersAllocated"),
|
WebServicesTestUtils.getXmlInt(element, "containersAllocated"),
|
||||||
WebServicesTestUtils.getXmlInt(element, "totalMB"),
|
WebServicesTestUtils.getXmlInt(element, "totalMB"),
|
||||||
WebServicesTestUtils.getXmlInt(element, "totalNodes"),
|
WebServicesTestUtils.getXmlInt(element, "totalNodes"),
|
||||||
|
@ -404,11 +408,13 @@ public class TestRMWebServices extends JerseyTest {
|
||||||
Exception {
|
Exception {
|
||||||
assertEquals("incorrect number of elements", 1, json.length());
|
assertEquals("incorrect number of elements", 1, json.length());
|
||||||
JSONObject clusterinfo = json.getJSONObject("clusterMetrics");
|
JSONObject clusterinfo = json.getJSONObject("clusterMetrics");
|
||||||
assertEquals("incorrect number of elements", 19, clusterinfo.length());
|
assertEquals("incorrect number of elements", 23, clusterinfo.length());
|
||||||
verifyClusterMetrics(
|
verifyClusterMetrics(
|
||||||
clusterinfo.getInt("appsSubmitted"), clusterinfo.getInt("appsCompleted"),
|
clusterinfo.getInt("appsSubmitted"), clusterinfo.getInt("appsCompleted"),
|
||||||
clusterinfo.getInt("reservedMB"), clusterinfo.getInt("availableMB"),
|
clusterinfo.getInt("reservedMB"), clusterinfo.getInt("availableMB"),
|
||||||
clusterinfo.getInt("allocatedMB"),
|
clusterinfo.getInt("allocatedMB"),
|
||||||
|
clusterinfo.getInt("reservedVirtualCores"), clusterinfo.getInt("availableVirtualCores"),
|
||||||
|
clusterinfo.getInt("allocatedVirtualCores"), clusterinfo.getInt("totalVirtualCores"),
|
||||||
clusterinfo.getInt("containersAllocated"),
|
clusterinfo.getInt("containersAllocated"),
|
||||||
clusterinfo.getInt("totalMB"), clusterinfo.getInt("totalNodes"),
|
clusterinfo.getInt("totalMB"), clusterinfo.getInt("totalNodes"),
|
||||||
clusterinfo.getInt("lostNodes"), clusterinfo.getInt("unhealthyNodes"),
|
clusterinfo.getInt("lostNodes"), clusterinfo.getInt("unhealthyNodes"),
|
||||||
|
@ -418,7 +424,9 @@ public class TestRMWebServices extends JerseyTest {
|
||||||
|
|
||||||
public void verifyClusterMetrics(int submittedApps, int completedApps,
|
public void verifyClusterMetrics(int submittedApps, int completedApps,
|
||||||
int reservedMB, int availableMB,
|
int reservedMB, int availableMB,
|
||||||
int allocMB, int containersAlloc, int totalMB, int totalNodes,
|
int allocMB, int reservedVirtualCores, int availableVirtualCores,
|
||||||
|
int allocVirtualCores, int totalVirtualCores,
|
||||||
|
int containersAlloc, int totalMB, int totalNodes,
|
||||||
int lostNodes, int unhealthyNodes, int decommissionedNodes,
|
int lostNodes, int unhealthyNodes, int decommissionedNodes,
|
||||||
int rebootedNodes, int activeNodes) throws JSONException, Exception {
|
int rebootedNodes, int activeNodes) throws JSONException, Exception {
|
||||||
|
|
||||||
|
@ -428,7 +436,8 @@ public class TestRMWebServices extends JerseyTest {
|
||||||
|
|
||||||
long totalMBExpect =
|
long totalMBExpect =
|
||||||
metrics.getAvailableMB() + metrics.getAllocatedMB();
|
metrics.getAvailableMB() + metrics.getAllocatedMB();
|
||||||
|
long totalVirtualCoresExpect =
|
||||||
|
metrics.getAvailableVirtualCores() + metrics.getAllocatedVirtualCores();
|
||||||
assertEquals("appsSubmitted doesn't match",
|
assertEquals("appsSubmitted doesn't match",
|
||||||
metrics.getAppsSubmitted(), submittedApps);
|
metrics.getAppsSubmitted(), submittedApps);
|
||||||
assertEquals("appsCompleted doesn't match",
|
assertEquals("appsCompleted doesn't match",
|
||||||
|
@ -439,6 +448,12 @@ public class TestRMWebServices extends JerseyTest {
|
||||||
metrics.getAvailableMB(), availableMB);
|
metrics.getAvailableMB(), availableMB);
|
||||||
assertEquals("allocatedMB doesn't match",
|
assertEquals("allocatedMB doesn't match",
|
||||||
metrics.getAllocatedMB(), allocMB);
|
metrics.getAllocatedMB(), allocMB);
|
||||||
|
assertEquals("reservedVirtualCores doesn't match",
|
||||||
|
metrics.getReservedVirtualCores(), reservedVirtualCores);
|
||||||
|
assertEquals("availableVirtualCores doesn't match",
|
||||||
|
metrics.getAvailableVirtualCores(), availableVirtualCores);
|
||||||
|
assertEquals("allocatedVirtualCores doesn't match",
|
||||||
|
totalVirtualCoresExpect, allocVirtualCores);
|
||||||
assertEquals("containersAllocated doesn't match", 0, containersAlloc);
|
assertEquals("containersAllocated doesn't match", 0, containersAlloc);
|
||||||
assertEquals("totalMB doesn't match", totalMBExpect, totalMB);
|
assertEquals("totalMB doesn't match", totalMBExpect, totalMB);
|
||||||
assertEquals(
|
assertEquals(
|
||||||
|
|
|
@ -656,13 +656,15 @@ public class TestRMWebServicesNodes extends JerseyTest {
|
||||||
WebServicesTestUtils.getXmlInt(element, "numContainers"),
|
WebServicesTestUtils.getXmlInt(element, "numContainers"),
|
||||||
WebServicesTestUtils.getXmlLong(element, "usedMemoryMB"),
|
WebServicesTestUtils.getXmlLong(element, "usedMemoryMB"),
|
||||||
WebServicesTestUtils.getXmlLong(element, "availMemoryMB"),
|
WebServicesTestUtils.getXmlLong(element, "availMemoryMB"),
|
||||||
|
WebServicesTestUtils.getXmlLong(element, "usedVirtualCores"),
|
||||||
|
WebServicesTestUtils.getXmlLong(element, "availableVirtualCores"),
|
||||||
WebServicesTestUtils.getXmlString(element, "version"));
|
WebServicesTestUtils.getXmlString(element, "version"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void verifyNodeInfo(JSONObject nodeInfo, MockNM nm)
|
public void verifyNodeInfo(JSONObject nodeInfo, MockNM nm)
|
||||||
throws JSONException, Exception {
|
throws JSONException, Exception {
|
||||||
assertEquals("incorrect number of elements", 11, nodeInfo.length());
|
assertEquals("incorrect number of elements", 13, nodeInfo.length());
|
||||||
|
|
||||||
verifyNodeInfoGeneric(nm, nodeInfo.getString("state"),
|
verifyNodeInfoGeneric(nm, nodeInfo.getString("state"),
|
||||||
nodeInfo.getString("rack"),
|
nodeInfo.getString("rack"),
|
||||||
|
@ -671,6 +673,7 @@ public class TestRMWebServicesNodes extends JerseyTest {
|
||||||
nodeInfo.getLong("lastHealthUpdate"),
|
nodeInfo.getLong("lastHealthUpdate"),
|
||||||
nodeInfo.getString("healthReport"), nodeInfo.getInt("numContainers"),
|
nodeInfo.getString("healthReport"), nodeInfo.getInt("numContainers"),
|
||||||
nodeInfo.getLong("usedMemoryMB"), nodeInfo.getLong("availMemoryMB"),
|
nodeInfo.getLong("usedMemoryMB"), nodeInfo.getLong("availMemoryMB"),
|
||||||
|
nodeInfo.getLong("usedVirtualCores"), nodeInfo.getLong("availableVirtualCores"),
|
||||||
nodeInfo.getString("version"));
|
nodeInfo.getString("version"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -678,7 +681,8 @@ public class TestRMWebServicesNodes extends JerseyTest {
|
||||||
public void verifyNodeInfoGeneric(MockNM nm, String state, String rack,
|
public void verifyNodeInfoGeneric(MockNM nm, String state, String rack,
|
||||||
String id, String nodeHostName,
|
String id, String nodeHostName,
|
||||||
String nodeHTTPAddress, long lastHealthUpdate, String healthReport,
|
String nodeHTTPAddress, long lastHealthUpdate, String healthReport,
|
||||||
int numContainers, long usedMemoryMB, long availMemoryMB, String version)
|
int numContainers, long usedMemoryMB, long availMemoryMB, long usedVirtualCores,
|
||||||
|
long availVirtualCores, String version)
|
||||||
throws JSONException, Exception {
|
throws JSONException, Exception {
|
||||||
|
|
||||||
RMNode node = rm.getRMContext().getRMNodes().get(nm.getNodeId());
|
RMNode node = rm.getRMContext().getRMNodes().get(nm.getNodeId());
|
||||||
|
@ -712,6 +716,10 @@ public class TestRMWebServicesNodes extends JerseyTest {
|
||||||
.getUsedResource().getMemory(), usedMemoryMB);
|
.getUsedResource().getMemory(), usedMemoryMB);
|
||||||
assertEquals("availMemoryMB doesn't match: " + availMemoryMB, report
|
assertEquals("availMemoryMB doesn't match: " + availMemoryMB, report
|
||||||
.getAvailableResource().getMemory(), availMemoryMB);
|
.getAvailableResource().getMemory(), availMemoryMB);
|
||||||
|
assertEquals("usedVirtualCores doesn't match: " + usedVirtualCores, report
|
||||||
|
.getUsedResource().getVirtualCores(), usedVirtualCores);
|
||||||
|
assertEquals("availVirtualCores doesn't match: " + availVirtualCores, report
|
||||||
|
.getAvailableResource().getVirtualCores(), availVirtualCores);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,8 @@ NodeManager REST API's.
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
| totalVmemAllocatedContainersMB | long | The amount of virtual memory allocated for use by containers in MB |
|
| totalVmemAllocatedContainersMB | long | The amount of virtual memory allocated for use by containers in MB |
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
|
| totalVCoresAllocatedContainers | long | The number of virtual cores allocated for use by containers |
|
||||||
|
*---------------+--------------+-------------------------------+
|
||||||
| lastNodeUpdateTime | long | The last timestamp at which the health report was received (in ms since epoch)|
|
| lastNodeUpdateTime | long | The last timestamp at which the health report was received (in ms since epoch)|
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
| healthReport | string | The diagnostic health report of the node |
|
| healthReport | string | The diagnostic health report of the node |
|
||||||
|
@ -109,6 +111,7 @@ NodeManager REST API's.
|
||||||
"nodeManagerBuildVersion" : "0.23.1-SNAPSHOT from 1228355 by user1 source checksum 20647f76c36430e888cc7204826a445c",
|
"nodeManagerBuildVersion" : "0.23.1-SNAPSHOT from 1228355 by user1 source checksum 20647f76c36430e888cc7204826a445c",
|
||||||
"lastNodeUpdateTime" : 1326222266126,
|
"lastNodeUpdateTime" : 1326222266126,
|
||||||
"totalVmemAllocatedContainersMB" : 17203,
|
"totalVmemAllocatedContainersMB" : 17203,
|
||||||
|
"totalVCoresAllocatedContainers" : 8,
|
||||||
"nodeHealthy" : true,
|
"nodeHealthy" : true,
|
||||||
"healthReport" : "",
|
"healthReport" : "",
|
||||||
"totalPmemAllocatedContainersMB" : 8192,
|
"totalPmemAllocatedContainersMB" : 8192,
|
||||||
|
@ -148,6 +151,7 @@ NodeManager REST API's.
|
||||||
<healthReport/>
|
<healthReport/>
|
||||||
<totalVmemAllocatedContainersMB>17203</totalVmemAllocatedContainersMB>
|
<totalVmemAllocatedContainersMB>17203</totalVmemAllocatedContainersMB>
|
||||||
<totalPmemAllocatedContainersMB>8192</totalPmemAllocatedContainersMB>
|
<totalPmemAllocatedContainersMB>8192</totalPmemAllocatedContainersMB>
|
||||||
|
<totalVCoresAllocatedContainers>8</totalVCoresAllocatedContainers>
|
||||||
<lastNodeUpdateTime>1326222386134</lastNodeUpdateTime>
|
<lastNodeUpdateTime>1326222386134</lastNodeUpdateTime>
|
||||||
<nodeHealthy>true</nodeHealthy>
|
<nodeHealthy>true</nodeHealthy>
|
||||||
<nodeManagerVersion>0.23.1-SNAPSHOT</nodeManagerVersion>
|
<nodeManagerVersion>0.23.1-SNAPSHOT</nodeManagerVersion>
|
||||||
|
@ -446,6 +450,7 @@ NodeManager REST API's.
|
||||||
{
|
{
|
||||||
"nodeId" : "host.domain.com:8041",
|
"nodeId" : "host.domain.com:8041",
|
||||||
"totalMemoryNeededMB" : 2048,
|
"totalMemoryNeededMB" : 2048,
|
||||||
|
"totalVCoresNeeded" : 1,
|
||||||
"state" : "RUNNING",
|
"state" : "RUNNING",
|
||||||
"diagnostics" : "",
|
"diagnostics" : "",
|
||||||
"containerLogsLink" : "http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000001/user1",
|
"containerLogsLink" : "http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000001/user1",
|
||||||
|
@ -456,6 +461,7 @@ NodeManager REST API's.
|
||||||
{
|
{
|
||||||
"nodeId" : "host.domain.com:8041",
|
"nodeId" : "host.domain.com:8041",
|
||||||
"totalMemoryNeededMB" : 2048,
|
"totalMemoryNeededMB" : 2048,
|
||||||
|
"totalVCoresNeeded" : 2,
|
||||||
"state" : "RUNNING",
|
"state" : "RUNNING",
|
||||||
"diagnostics" : "",
|
"diagnostics" : "",
|
||||||
"containerLogsLink" : "http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000003/user1",
|
"containerLogsLink" : "http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000003/user1",
|
||||||
|
@ -498,6 +504,7 @@ NodeManager REST API's.
|
||||||
<diagnostics/>
|
<diagnostics/>
|
||||||
<user>user1</user>
|
<user>user1</user>
|
||||||
<totalMemoryNeededMB>2048</totalMemoryNeededMB>
|
<totalMemoryNeededMB>2048</totalMemoryNeededMB>
|
||||||
|
<totalVCoresNeeded>1</totalVCoresNeeded>
|
||||||
<containerLogsLink>http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000001/user1</containerLogsLink>
|
<containerLogsLink>http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000001/user1</containerLogsLink>
|
||||||
<nodeId>host.domain.com:8041</nodeId>
|
<nodeId>host.domain.com:8041</nodeId>
|
||||||
</container>
|
</container>
|
||||||
|
@ -508,6 +515,7 @@ NodeManager REST API's.
|
||||||
<diagnostics>Container killed by the ApplicationMaster.</diagnostics>
|
<diagnostics>Container killed by the ApplicationMaster.</diagnostics>
|
||||||
<user>user1</user>
|
<user>user1</user>
|
||||||
<totalMemoryNeededMB>2048</totalMemoryNeededMB>
|
<totalMemoryNeededMB>2048</totalMemoryNeededMB>
|
||||||
|
<totalVCoresNeeded>2</totalVCoresNeeded>
|
||||||
<containerLogsLink>http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000003/user1</containerLogsLink>
|
<containerLogsLink>http://host.domain.com:8042/node/containerlogs/container_1326121700862_0006_01_000003/user1</containerLogsLink>
|
||||||
<nodeId>host.domain.com:8041</nodeId>
|
<nodeId>host.domain.com:8041</nodeId>
|
||||||
</container>
|
</container>
|
||||||
|
@ -560,6 +568,8 @@ NodeManager REST API's.
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
| totalMemoryNeededMB | long | Total amout of memory needed by the container (in MB) |
|
| totalMemoryNeededMB | long | Total amout of memory needed by the container (in MB) |
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
|
| totalVCoresNeeded | long | Total number of virtual cores needed by the container |
|
||||||
|
*---------------+--------------+-------------------------------+
|
||||||
|
|
||||||
** Response Examples
|
** Response Examples
|
||||||
|
|
||||||
|
@ -587,6 +597,7 @@ NodeManager REST API's.
|
||||||
"container" : {
|
"container" : {
|
||||||
"nodeId" : "host.domain.com:8041",
|
"nodeId" : "host.domain.com:8041",
|
||||||
"totalMemoryNeededMB" : 2048,
|
"totalMemoryNeededMB" : 2048,
|
||||||
|
"totalVCoresNeeded" : 1,
|
||||||
"state" : "RUNNING",
|
"state" : "RUNNING",
|
||||||
"diagnostics" : "",
|
"diagnostics" : "",
|
||||||
"containerLogsLink" : "http://host.domain.com:8042/node/containerlogs/container_1326121700862_0007_01_000001/user1",
|
"containerLogsLink" : "http://host.domain.com:8042/node/containerlogs/container_1326121700862_0007_01_000001/user1",
|
||||||
|
@ -626,6 +637,7 @@ NodeManager REST API's.
|
||||||
<diagnostics/>
|
<diagnostics/>
|
||||||
<user>user1</user>
|
<user>user1</user>
|
||||||
<totalMemoryNeededMB>2048</totalMemoryNeededMB>
|
<totalMemoryNeededMB>2048</totalMemoryNeededMB>
|
||||||
|
<totalVCoresNeeded>1</totalVCoresNeeded>
|
||||||
<containerLogsLink>http://host.domain.com:8042/node/containerlogs/container_1326121700862_0007_01_000001/user1</containerLogsLink>
|
<containerLogsLink>http://host.domain.com:8042/node/containerlogs/container_1326121700862_0007_01_000001/user1</containerLogsLink>
|
||||||
<nodeId>host.domain.com:8041</nodeId>
|
<nodeId>host.domain.com:8041</nodeId>
|
||||||
</container>
|
</container>
|
||||||
|
|
|
@ -195,6 +195,14 @@ ResourceManager REST API's.
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
| totalMB | long | The amount of total memory in MB |
|
| totalMB | long | The amount of total memory in MB |
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
|
| reservedVirtualCores | long | The number of reserved virtual cores |
|
||||||
|
*---------------+--------------+-------------------------------+
|
||||||
|
| availableVirtualCores | long | The number of available virtual cores |
|
||||||
|
*---------------+--------------+-------------------------------+
|
||||||
|
| allocatedVirtualCores | long | The number of allocated virtual cores |
|
||||||
|
*---------------+--------------+-------------------------------+
|
||||||
|
| totalVirtualCores | long | The total number of virtual cores |
|
||||||
|
*---------------+--------------+-------------------------------+
|
||||||
| containersAllocated | int | The number of containers allocated |
|
| containersAllocated | int | The number of containers allocated |
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
| containersReserved | int | The number of containers reserved |
|
| containersReserved | int | The number of containers reserved |
|
||||||
|
@ -247,10 +255,14 @@ ResourceManager REST API's.
|
||||||
"reservedMB":0,
|
"reservedMB":0,
|
||||||
"availableMB":17408,
|
"availableMB":17408,
|
||||||
"allocatedMB":0,
|
"allocatedMB":0,
|
||||||
|
"reservedVirtualCores":0,
|
||||||
|
"availableVirtualCores":7,
|
||||||
|
"allocatedVirtualCores":1,
|
||||||
"containersAllocated":0,
|
"containersAllocated":0,
|
||||||
"containersReserved":0,
|
"containersReserved":0,
|
||||||
"containersPending":0,
|
"containersPending":0,
|
||||||
"totalMB":17408,
|
"totalMB":17408,
|
||||||
|
"totalVirtualCores":8,
|
||||||
"totalNodes":1,
|
"totalNodes":1,
|
||||||
"lostNodes":0,
|
"lostNodes":0,
|
||||||
"unhealthyNodes":0,
|
"unhealthyNodes":0,
|
||||||
|
@ -293,10 +305,14 @@ ResourceManager REST API's.
|
||||||
<reservedMB>0</reservedMB>
|
<reservedMB>0</reservedMB>
|
||||||
<availableMB>17408</availableMB>
|
<availableMB>17408</availableMB>
|
||||||
<allocatedMB>0</allocatedMB>
|
<allocatedMB>0</allocatedMB>
|
||||||
|
<reservedVirtualCores>0</reservedVirtualCores>
|
||||||
|
<availableVirtualCores>7</availableVirtualCores>
|
||||||
|
<allocatedVirtualCores>1</allocatedVirtualCores>
|
||||||
<containersAllocated>0</containersAllocated>
|
<containersAllocated>0</containersAllocated>
|
||||||
<containersReserved>0</containersReserved>
|
<containersReserved>0</containersReserved>
|
||||||
<containersPending>0</containersPending>
|
<containersPending>0</containersPending>
|
||||||
<totalMB>17408</totalMB>
|
<totalMB>17408</totalMB>
|
||||||
|
<totalVirtualCores>8</totalVirtualCores>
|
||||||
<totalNodes>1</totalNodes>
|
<totalNodes>1</totalNodes>
|
||||||
<lostNodes>0</lostNodes>
|
<lostNodes>0</lostNodes>
|
||||||
<unhealthyNodes>0</unhealthyNodes>
|
<unhealthyNodes>0</unhealthyNodes>
|
||||||
|
@ -2040,8 +2056,10 @@ Server: Jetty(6.1.26)
|
||||||
"lastHealthUpdate":1324056895432,
|
"lastHealthUpdate":1324056895432,
|
||||||
"healthReport":"Healthy",
|
"healthReport":"Healthy",
|
||||||
"numContainers":0,
|
"numContainers":0,
|
||||||
"usedMemoryMB":0
|
"usedMemoryMB":0,
|
||||||
"availMemoryMB":8192
|
"availMemoryMB":8192,
|
||||||
|
"usedVirtualCores":0,
|
||||||
|
"availableVirtualCores":8
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"rack":"\/default-rack",
|
"rack":"\/default-rack",
|
||||||
|
@ -2054,7 +2072,9 @@ Server: Jetty(6.1.26)
|
||||||
"healthReport":"Healthy",
|
"healthReport":"Healthy",
|
||||||
"numContainers":0,
|
"numContainers":0,
|
||||||
"usedMemoryMB":0,
|
"usedMemoryMB":0,
|
||||||
"availMemoryMB":8192
|
"availMemoryMB":8192,
|
||||||
|
"usedVirtualCores":0,
|
||||||
|
"availableVirtualCores":8
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@ -2096,6 +2116,8 @@ Server: Jetty(6.1.26)
|
||||||
<numContainers>0</numContainers>
|
<numContainers>0</numContainers>
|
||||||
<usedMemoryMB>0</usedMemoryMB>
|
<usedMemoryMB>0</usedMemoryMB>
|
||||||
<availMemoryMB>5120</availMemoryMB>
|
<availMemoryMB>5120</availMemoryMB>
|
||||||
|
<usedVirtualCores>0</usedVirtualCores>
|
||||||
|
<availableVirtualCores>8</availableVirtualCores>
|
||||||
</node>
|
</node>
|
||||||
<node>
|
<node>
|
||||||
<rack>/default-rack</rack>
|
<rack>/default-rack</rack>
|
||||||
|
@ -2109,6 +2131,8 @@ Server: Jetty(6.1.26)
|
||||||
<numContainers>0</numContainers>
|
<numContainers>0</numContainers>
|
||||||
<usedMemoryMB>0</usedMemoryMB>
|
<usedMemoryMB>0</usedMemoryMB>
|
||||||
<availMemoryMB>5120</availMemoryMB>
|
<availMemoryMB>5120</availMemoryMB>
|
||||||
|
<usedVirtualCores>0</usedVirtualCores>
|
||||||
|
<availableVirtualCores>8</availableVirtualCores>
|
||||||
</node>
|
</node>
|
||||||
</nodes>
|
</nodes>
|
||||||
+---+
|
+---+
|
||||||
|
@ -2159,10 +2183,14 @@ Server: Jetty(6.1.26)
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
| lastHealthUpdate | long | The last time the node reported its health (in ms since epoch)|
|
| lastHealthUpdate | long | The last time the node reported its health (in ms since epoch)|
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
| usedMemoryMB | long | The total about of memory currently used on the node (in MB)|
|
| usedMemoryMB | long | The total amount of memory currently used on the node (in MB)|
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
| availMemoryMB | long | The total amount of memory currently available on the node (in MB)|
|
| availMemoryMB | long | The total amount of memory currently available on the node (in MB)|
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
|
| usedVirtualCores | long | The total number of vCores currently used on the node |
|
||||||
|
*---------------+--------------+-------------------------------+
|
||||||
|
| availableVirtualCores | long | The total number of vCores available on the node |
|
||||||
|
*---------------+--------------+-------------------------------+
|
||||||
| numContainers | int | The total number of containers currently running on the node|
|
| numContainers | int | The total number of containers currently running on the node|
|
||||||
*---------------+--------------+-------------------------------+
|
*---------------+--------------+-------------------------------+
|
||||||
|
|
||||||
|
@ -2201,7 +2229,9 @@ Server: Jetty(6.1.26)
|
||||||
"healthReport":"Healthy",
|
"healthReport":"Healthy",
|
||||||
"numContainers":0,
|
"numContainers":0,
|
||||||
"usedMemoryMB":0,
|
"usedMemoryMB":0,
|
||||||
"availMemoryMB":5120
|
"availMemoryMB":5120,
|
||||||
|
"usedVirtualCores":0,
|
||||||
|
"availableVirtualCores":8
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+---+
|
+---+
|
||||||
|
@ -2240,6 +2270,8 @@ Server: Jetty(6.1.26)
|
||||||
<numContainers>0</numContainers>
|
<numContainers>0</numContainers>
|
||||||
<usedMemoryMB>0</usedMemoryMB>
|
<usedMemoryMB>0</usedMemoryMB>
|
||||||
<availMemoryMB>5120</availMemoryMB>
|
<availMemoryMB>5120</availMemoryMB>
|
||||||
|
<usedVirtualCores>0</usedVirtualCores>
|
||||||
|
<availableVirtualCores>5120</availableVirtualCores>
|
||||||
</node>
|
</node>
|
||||||
+---+
|
+---+
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue