/** Regression test for HDFS-2934. */ @Test public void testSomeConfsNNSpecificSomeNSSpecific() { final HdfsConfiguration conf = new HdfsConfiguration(); String key = DFSConfigKeys.DFS_NAMENODE_SHARED_EDITS_DIR_KEY; conf.set(key, "global-default"); conf.set(key + ".ns1", "ns1-override"); conf.set(key + ".ns1.nn1", "nn1-override"); // A namenode in another nameservice should get the global default. Configuration newConf = new Configuration(conf); NameNode.initializeGenericKeys(newConf, "ns2", "nn1"); assertEquals("global-default", newConf.get(key)); // A namenode in another non-HA nameservice should get global default. newConf = new Configuration(conf); NameNode.initializeGenericKeys(newConf, "ns2", null); assertEquals("global-default", newConf.get(key)); // A namenode in the same nameservice should get the ns setting newConf = new Configuration(conf); NameNode.initializeGenericKeys(newConf, "ns1", "nn2"); assertEquals("ns1-override", newConf.get(key)); // The nn with the nn-specific setting should get its own override newConf = new Configuration(conf); NameNode.initializeGenericKeys(newConf, "ns1", "nn1"); assertEquals("nn1-override", newConf.get(key)); }
/** * Verify that configured directories exist, then Interactively confirm that formatting is desired * for each existing directory and format them. * * @param conf * @param force * @return true if formatting was aborted, false otherwise * @throws IOException */ private static boolean format(Configuration conf, boolean force, boolean isInteractive) throws IOException { initializeGenericKeys(conf); checkAllowFormat(conf); if (UserGroupInformation.isSecurityEnabled()) { InetSocketAddress socAddr = getAddress(conf); SecurityUtil.login( conf, DFS_NAMENODE_KEYTAB_FILE_KEY, DFS_NAMENODE_USER_NAME_KEY, socAddr.getHostName()); } // if clusterID is not provided - see if you can find the current one String clusterId = StartupOption.FORMAT.getClusterId(); if (clusterId == null || clusterId.equals("")) { // Generate a new cluster id clusterId = StorageInfo.newClusterID(); } System.out.println("Formatting using clusterid: " + clusterId); try { HdfsStorageFactory.setConfiguration(conf); if (force) { HdfsStorageFactory.formatStorageNonTransactional(); } else { HdfsStorageFactory.formatStorage(); } StorageInfo.storeStorageInfoToDB(clusterId); // this adds new row to the db } catch (StorageException e) { throw new RuntimeException(e.getMessage()); } return false; }
/** * Test to ensure nameservice specific keys in the configuration are copied to generic keys when * the namenode starts. */ @Test public void testConfModificationFederationAndHa() { final HdfsConfiguration conf = new HdfsConfiguration(); String nsId = "ns1"; String nnId = "nn1"; conf.set(DFS_NAMESERVICES, nsId); conf.set(DFS_NAMESERVICE_ID, nsId); conf.set(DFS_HA_NAMENODES_KEY_PREFIX + "." + nsId, nnId); // Set the nameservice specific keys with nameserviceId in the config key for (String key : NameNode.NAMENODE_SPECIFIC_KEYS) { // Note: value is same as the key conf.set(DFSUtil.addKeySuffixes(key, nsId, nnId), key); } // Initialize generic keys from specific keys NameNode.initializeGenericKeys(conf, nsId, nnId); // Retrieve the keys without nameserviceId and Ensure generic keys are set // to the correct value for (String key : NameNode.NAMENODE_SPECIFIC_KEYS) { assertEquals(key, conf.get(key)); } }
/** * Ensure that fs.defaultFS is set in the configuration even if neither HA nor Federation is * enabled. * * <p>Regression test for HDFS-3351. */ @Test public void testConfModificationNoFederationOrHa() { final HdfsConfiguration conf = new HdfsConfiguration(); String nsId = null; String nnId = null; conf.set(DFS_NAMENODE_RPC_ADDRESS_KEY, "localhost:1234"); assertFalse("hdfs://localhost:1234".equals(conf.get(FS_DEFAULT_NAME_KEY))); NameNode.initializeGenericKeys(conf, nsId, nnId); assertEquals("hdfs://localhost:1234", conf.get(FS_DEFAULT_NAME_KEY)); }
protected NameNode(Configuration conf, NamenodeRole role) throws IOException { this.conf = conf; try { initializeGenericKeys(conf); initialize(conf); enterActiveState(); } catch (IOException e) { this.stop(); throw e; } catch (HadoopIllegalArgumentException e) { this.stop(); throw e; } }