HDFS-8721. Add a metric for number of encryption zones. Contributed by Rakesh R.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/cb03768b Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/cb03768b Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/cb03768b Branch: refs/heads/YARN-1197 Commit: cb03768b1b2250b9b5a7944cf6ef918e8a974e20 Parents: 5137b38 Author: cnauroth <cnaur...@apache.org> Authored: Tue Jul 21 13:55:58 2015 -0700 Committer: cnauroth <cnaur...@apache.org> Committed: Tue Jul 21 13:55:58 2015 -0700 ---------------------------------------------------------------------- .../hadoop-common/src/site/markdown/Metrics.md | 1 + hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 +++ .../hadoop/hdfs/server/namenode/EncryptionZoneManager.java | 7 +++++++ .../org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java | 6 ++++++ .../hdfs/server/namenode/metrics/FSNamesystemMBean.java | 5 +++++ .../test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java | 6 ++++++ .../hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java | 5 +++++ 7 files changed, 33 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/cb03768b/hadoop-common-project/hadoop-common/src/site/markdown/Metrics.md ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/site/markdown/Metrics.md b/hadoop-common-project/hadoop-common/src/site/markdown/Metrics.md index ca89745..2b23508 100644 --- a/hadoop-common-project/hadoop-common/src/site/markdown/Metrics.md +++ b/hadoop-common-project/hadoop-common/src/site/markdown/Metrics.md @@ -216,6 +216,7 @@ Each metrics record contains tags such as HAState and Hostname as additional inf | `TotalLoad` | Current number of connections | | `SnapshottableDirectories` | Current number of snapshottable directories | | `Snapshots` | Current number of snapshots | +| `NumEncryptionZones` | Current number of encryption zones | | `BlocksTotal` | Current number of allocated blocks in the system | | `FilesTotal` | Current number of files and directories | | `PendingReplicationBlocks` | Current number of blocks pending to be replicated | http://git-wip-us.apache.org/repos/asf/hadoop/blob/cb03768b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index a29a090..7c771b0 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -734,6 +734,9 @@ Release 2.8.0 - UNRELEASED HDFS-7483. Display information per tier on the Namenode UI. (Benoy Antony and wheat9 via wheat9) + HDFS-8721. Add a metric for number of encryption zones. + (Rakesh R via cnauroth) + OPTIMIZATIONS HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than http://git-wip-us.apache.org/repos/asf/hadoop/blob/cb03768b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/EncryptionZoneManager.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/EncryptionZoneManager.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/EncryptionZoneManager.java index 3fe748d..7c3c895 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/EncryptionZoneManager.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/EncryptionZoneManager.java @@ -360,4 +360,11 @@ public class EncryptionZoneManager { final boolean hasMore = (numResponses < tailMap.size()); return new BatchedListEntries<EncryptionZone>(zones, hasMore); } + + /** + * @return number of encryption zones. + */ + public int getNumEncryptionZones() { + return encryptionZones.size(); + } } http://git-wip-us.apache.org/repos/asf/hadoop/blob/cb03768b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java index 7c6d6a1..fd37fbe 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/FSNamesystem.java @@ -4075,6 +4075,12 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean, return JSON.toString(info); } + @Override // FSNamesystemMBean + @Metric({ "NumEncryptionZones", "The number of encryption zones" }) + public int getNumEncryptionZones() { + return dir.ezManager.getNumEncryptionZones(); + } + int getNumberOfDatanodes(DatanodeReportType type) { readLock(); try { http://git-wip-us.apache.org/repos/asf/hadoop/blob/cb03768b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/metrics/FSNamesystemMBean.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/metrics/FSNamesystemMBean.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/metrics/FSNamesystemMBean.java index b31b7b6..580cb78 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/metrics/FSNamesystemMBean.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/namenode/metrics/FSNamesystemMBean.java @@ -184,4 +184,9 @@ public interface FSNamesystemMBean { * @return JSON string */ public String getTopUserOpCounts(); + + /** + * Return the number of encryption zones in the system. + */ + int getNumEncryptionZones(); } http://git-wip-us.apache.org/repos/asf/hadoop/blob/cb03768b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java index e0bd6f4..567a70a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/TestEncryptionZones.java @@ -97,6 +97,8 @@ import static org.mockito.Mockito.any; import static org.mockito.Mockito.anyString; import static org.apache.hadoop.hdfs.DFSTestUtil.verifyFilesEqual; import static org.apache.hadoop.test.GenericTestUtils.assertExceptionContains; +import static org.apache.hadoop.test.MetricsAsserts.assertGauge; +import static org.apache.hadoop.test.MetricsAsserts.getMetrics; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotEquals; @@ -120,6 +122,7 @@ public class TestEncryptionZones { protected DistributedFileSystem fs; private File testRootDir; protected final String TEST_KEY = "test_key"; + private static final String NS_METRICS = "FSNamesystem"; protected FileSystemTestWrapper fsWrapper; protected FileContextTestWrapper fcWrapper; @@ -358,6 +361,9 @@ public class TestEncryptionZones { fs.setSafeMode(SafeModeAction.SAFEMODE_LEAVE); cluster.restartNameNode(true); assertNumZones(numZones); + assertEquals("Unexpected number of encryption zones!", numZones, cluster + .getNamesystem().getNumEncryptionZones()); + assertGauge("NumEncryptionZones", numZones, getMetrics(NS_METRICS)); assertZonePresent(null, zone1.toString()); // Verify newly added ez is present after restarting the NameNode http://git-wip-us.apache.org/repos/asf/hadoop/blob/cb03768b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java index c044fb0..fb3179a 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/test/java/org/apache/hadoop/hdfs/server/namenode/TestFSNamesystemMBean.java @@ -117,6 +117,11 @@ public class TestFSNamesystemMBean { "PendingDeletionBlocks"); assertNotNull(pendingDeletionBlocks); assertTrue(pendingDeletionBlocks instanceof Long); + + Object encryptionZones = mbs.getAttribute(mxbeanName, + "NumEncryptionZones"); + assertNotNull(encryptionZones); + assertTrue(encryptionZones instanceof Integer); } finally { if (cluster != null) { cluster.shutdown();