HDFS-4518. Merge 1451348 from trunk.

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1451387 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Suresh Srinivas 2013-02-28 22:08:26 +00:00
parent 0c477e9816
commit a8dee7c237
3 changed files with 39 additions and 11 deletions

View File

@ -14,6 +14,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

@ -3667,42 +3667,49 @@ public class FSNamesystem implements Namesystem, FSClusterStats,
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

@ -130,6 +130,24 @@ public class TestNameNodeMetrics {
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 {