HDFS-8721. Add a metric for number of encryption zones. Contributed by Rakesh R.

(cherry picked from commit cb03768b1b)
This commit is contained in:
cnauroth 2015-07-21 13:55:58 -07:00
parent b728edce0f
commit 57d55d40dd
7 changed files with 33 additions and 0 deletions

View File

@ -215,6 +215,7 @@ Each metrics record contains tags such as HAState and Hostname as additional inf
| `TotalLoad` | Current number of connections | | `TotalLoad` | Current number of connections |
| `SnapshottableDirectories` | Current number of snapshottable directories | | `SnapshottableDirectories` | Current number of snapshottable directories |
| `Snapshots` | Current number of snapshots | | `Snapshots` | Current number of snapshots |
| `NumEncryptionZones` | Current number of encryption zones |
| `BlocksTotal` | Current number of allocated blocks in the system | | `BlocksTotal` | Current number of allocated blocks in the system |
| `FilesTotal` | Current number of files and directories | | `FilesTotal` | Current number of files and directories |
| `PendingReplicationBlocks` | Current number of blocks pending to be replicated | | `PendingReplicationBlocks` | Current number of blocks pending to be replicated |

View File

@ -391,6 +391,9 @@ Release 2.8.0 - UNRELEASED
HDFS-7483. Display information per tier on the Namenode UI. HDFS-7483. Display information per tier on the Namenode UI.
(Benoy Antony and wheat9 via wheat9) (Benoy Antony and wheat9 via wheat9)
HDFS-8721. Add a metric for number of encryption zones.
(Rakesh R via cnauroth)
OPTIMIZATIONS OPTIMIZATIONS
HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than HDFS-8026. Trace FSOutputSummer#writeChecksumChunks rather than

View File

@ -360,4 +360,11 @@ public class EncryptionZoneManager {
final boolean hasMore = (numResponses < tailMap.size()); final boolean hasMore = (numResponses < tailMap.size());
return new BatchedListEntries<EncryptionZone>(zones, hasMore); return new BatchedListEntries<EncryptionZone>(zones, hasMore);
} }
/**
* @return number of encryption zones.
*/
public int getNumEncryptionZones() {
return encryptionZones.size();
}
} }

View File

@ -4072,6 +4072,12 @@ public class FSNamesystem implements Namesystem, FSNamesystemMBean,
return JSON.toString(info); return JSON.toString(info);
} }
@Override // FSNamesystemMBean
@Metric({ "NumEncryptionZones", "The number of encryption zones" })
public int getNumEncryptionZones() {
return dir.ezManager.getNumEncryptionZones();
}
int getNumberOfDatanodes(DatanodeReportType type) { int getNumberOfDatanodes(DatanodeReportType type) {
readLock(); readLock();
try { try {

View File

@ -184,4 +184,9 @@ public interface FSNamesystemMBean {
* @return JSON string * @return JSON string
*/ */
public String getTopUserOpCounts(); public String getTopUserOpCounts();
/**
* Return the number of encryption zones in the system.
*/
int getNumEncryptionZones();
} }

View File

@ -97,6 +97,8 @@ import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.anyString;
import static org.apache.hadoop.hdfs.DFSTestUtil.verifyFilesEqual; import static org.apache.hadoop.hdfs.DFSTestUtil.verifyFilesEqual;
import static org.apache.hadoop.test.GenericTestUtils.assertExceptionContains; 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.assertEquals;
import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotEquals;
@ -120,6 +122,7 @@ public class TestEncryptionZones {
protected DistributedFileSystem fs; protected DistributedFileSystem fs;
private File testRootDir; private File testRootDir;
protected final String TEST_KEY = "test_key"; protected final String TEST_KEY = "test_key";
private static final String NS_METRICS = "FSNamesystem";
protected FileSystemTestWrapper fsWrapper; protected FileSystemTestWrapper fsWrapper;
protected FileContextTestWrapper fcWrapper; protected FileContextTestWrapper fcWrapper;
@ -358,6 +361,9 @@ public class TestEncryptionZones {
fs.setSafeMode(SafeModeAction.SAFEMODE_LEAVE); fs.setSafeMode(SafeModeAction.SAFEMODE_LEAVE);
cluster.restartNameNode(true); cluster.restartNameNode(true);
assertNumZones(numZones); assertNumZones(numZones);
assertEquals("Unexpected number of encryption zones!", numZones, cluster
.getNamesystem().getNumEncryptionZones());
assertGauge("NumEncryptionZones", numZones, getMetrics(NS_METRICS));
assertZonePresent(null, zone1.toString()); assertZonePresent(null, zone1.toString());
// Verify newly added ez is present after restarting the NameNode // Verify newly added ez is present after restarting the NameNode

View File

@ -117,6 +117,11 @@ public class TestFSNamesystemMBean {
"PendingDeletionBlocks"); "PendingDeletionBlocks");
assertNotNull(pendingDeletionBlocks); assertNotNull(pendingDeletionBlocks);
assertTrue(pendingDeletionBlocks instanceof Long); assertTrue(pendingDeletionBlocks instanceof Long);
Object encryptionZones = mbs.getAttribute(mxbeanName,
"NumEncryptionZones");
assertNotNull(encryptionZones);
assertTrue(encryptionZones instanceof Integer);
} finally { } finally {
if (cluster != null) { if (cluster != null) {
cluster.shutdown(); cluster.shutdown();