HDFS-4518. Finer grained metrics for HDFS capacity. Contributed by Suresh Srinivas.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1451348 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Suresh Srinivas 2013-02-28 21:13:59 +00:00
parent 27c8a87a54
commit 2e02b92664
3 changed files with 39 additions and 11 deletions

View File

@ -316,6 +316,9 @@ Release 2.0.4-beta - UNRELEASED
HDFS-4304. Make FSEditLogOp.MAX_OP_SIZE configurable. (Colin Patrick HDFS-4304. Make FSEditLogOp.MAX_OP_SIZE configurable. (Colin Patrick
McCabe via atm) McCabe via atm)
HDFS-4518. Finer grained metrics for HDFS capacity.
(Arpit Agarwal via suresh)
OPTIMIZATIONS OPTIMIZATIONS
BUG FIXES BUG FIXES

View File

@ -3735,42 +3735,49 @@ long[] getStats() {
return stats; return stats;
} }
/**
* Total raw bytes including non-dfs used space.
*/
@Override // FSNamesystemMBean @Override // FSNamesystemMBean
@Metric({"CapacityTotal",
"Total raw capacity of data nodes in bytes"})
public long getCapacityTotal() { public long getCapacityTotal() {
return datanodeStatistics.getCapacityTotal(); return datanodeStatistics.getCapacityTotal();
} }
@Metric @Metric({"CapacityTotalGB",
"Total raw capacity of data nodes in GB"})
public float getCapacityTotalGB() { public float getCapacityTotalGB() {
return DFSUtil.roundBytesToGB(getCapacityTotal()); return DFSUtil.roundBytesToGB(getCapacityTotal());
} }
/**
* Total used space by data nodes
*/
@Override // FSNamesystemMBean @Override // FSNamesystemMBean
@Metric({"CapacityUsed",
"Total used capacity across all data nodes in bytes"})
public long getCapacityUsed() { public long getCapacityUsed() {
return datanodeStatistics.getCapacityUsed(); return datanodeStatistics.getCapacityUsed();
} }
@Metric @Metric({"CapacityUsedGB",
"Total used capacity across all data nodes in GB"})
public float getCapacityUsedGB() { public float getCapacityUsedGB() {
return DFSUtil.roundBytesToGB(getCapacityUsed()); return DFSUtil.roundBytesToGB(getCapacityUsed());
} }
@Override @Override // FSNamesystemMBean
@Metric({"CapacityRemaining", "Remaining capacity in bytes"})
public long getCapacityRemaining() { public long getCapacityRemaining() {
return datanodeStatistics.getCapacityRemaining(); return datanodeStatistics.getCapacityRemaining();
} }
@Metric @Metric({"CapacityRemainingGB", "Remaining capacity in GB"})
public float getCapacityRemainingGB() { public float getCapacityRemainingGB() {
return DFSUtil.roundBytesToGB(getCapacityRemaining()); return DFSUtil.roundBytesToGB(getCapacityRemaining());
} }
@Metric({"CapacityUsedNonDFS",
"Total space used by data nodes for non DFS purposes in bytes"})
public long getCapacityUsedNonDFS() {
return datanodeStatistics.getCapacityUsedNonDFS();
}
/** /**
* Total number of connections. * Total number of connections.
*/ */

View File

@ -124,6 +124,24 @@ private void readFile(FileSystem fileSys,Path name) throws IOException {
stm.close(); stm.close();
} }
/**
* Test that capacity metrics are exported and pass
* basic sanity tests.
*/
@Test (timeout = 1800)
public void testCapacityMetrics() throws Exception {
MetricsRecordBuilder rb = getMetrics(NS_METRICS);
long capacityTotal = MetricsAsserts.getLongGauge("CapacityTotal", rb);
assert(capacityTotal != 0);
long capacityUsed = MetricsAsserts.getLongGauge("CapacityUsed", rb);
long capacityRemaining =
MetricsAsserts.getLongGauge("CapacityRemaining", rb);
long capacityUsedNonDFS =
MetricsAsserts.getLongGauge("CapacityUsedNonDFS", rb);
assert(capacityUsed + capacityRemaining + capacityUsedNonDFS ==
capacityTotal);
}
/** Test metrics indicating the number of stale DataNodes */ /** Test metrics indicating the number of stale DataNodes */
@Test @Test
public void testStaleNodes() throws Exception { public void testStaleNodes() throws Exception {