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:
parent
27c8a87a54
commit
2e02b92664
|
@ -316,6 +316,9 @@ Release 2.0.4-beta - UNRELEASED
|
|||
HDFS-4304. Make FSEditLogOp.MAX_OP_SIZE configurable. (Colin Patrick
|
||||
McCabe via atm)
|
||||
|
||||
HDFS-4518. Finer grained metrics for HDFS capacity.
|
||||
(Arpit Agarwal via suresh)
|
||||
|
||||
OPTIMIZATIONS
|
||||
|
||||
BUG FIXES
|
||||
|
|
|
@ -3735,42 +3735,49 @@ public class FSNamesystem implements Namesystem, FSClusterStats,
|
|||
return stats;
|
||||
}
|
||||
|
||||
/**
|
||||
* Total raw bytes including non-dfs used space.
|
||||
*/
|
||||
@Override // FSNamesystemMBean
|
||||
@Metric({"CapacityTotal",
|
||||
"Total raw capacity of data nodes in bytes"})
|
||||
public long getCapacityTotal() {
|
||||
return datanodeStatistics.getCapacityTotal();
|
||||
}
|
||||
|
||||
@Metric
|
||||
@Metric({"CapacityTotalGB",
|
||||
"Total raw capacity of data nodes in GB"})
|
||||
public float getCapacityTotalGB() {
|
||||
return DFSUtil.roundBytesToGB(getCapacityTotal());
|
||||
}
|
||||
|
||||
/**
|
||||
* Total used space by data nodes
|
||||
*/
|
||||
@Override // FSNamesystemMBean
|
||||
@Metric({"CapacityUsed",
|
||||
"Total used capacity across all data nodes in bytes"})
|
||||
public long getCapacityUsed() {
|
||||
return datanodeStatistics.getCapacityUsed();
|
||||
}
|
||||
|
||||
@Metric
|
||||
@Metric({"CapacityUsedGB",
|
||||
"Total used capacity across all data nodes in GB"})
|
||||
public float getCapacityUsedGB() {
|
||||
return DFSUtil.roundBytesToGB(getCapacityUsed());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Override // FSNamesystemMBean
|
||||
@Metric({"CapacityRemaining", "Remaining capacity in bytes"})
|
||||
public long getCapacityRemaining() {
|
||||
return datanodeStatistics.getCapacityRemaining();
|
||||
}
|
||||
|
||||
@Metric
|
||||
@Metric({"CapacityRemainingGB", "Remaining capacity in GB"})
|
||||
public float getCapacityRemainingGB() {
|
||||
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.
|
||||
*/
|
||||
|
|
|
@ -123,7 +123,25 @@ public class TestNameNodeMetrics {
|
|||
stm.read(buffer,0,4);
|
||||
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
|
||||
public void testStaleNodes() throws Exception {
|
||||
|
|
Loading…
Reference in New Issue