From 15eb84b37e6c0195d59d3a29fbc5b7417bf022ff Mon Sep 17 00:00:00 2001 From: Haohui Mai Date: Fri, 23 Oct 2015 14:50:25 -0700 Subject: [PATCH] HDFS-9301. HDFS clients can't construct HdfsConfiguration instances. Contributed by Mingliang Liu. --- .../org/apache/hadoop/hdfs/DFSClient.java | 2 +- .../hadoop/hdfs/DistributedFileSystem.java | 2 +- .../apache/hadoop/hdfs/HdfsConfiguration.java | 152 ++++++++++++++++++ .../hadoop/hdfs/HdfsConfigurationLoader.java | 44 ----- .../hdfs/client/HdfsClientConfigKeys.java | 53 ++++++ hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 3 + .../org/apache/hadoop/hdfs/DFSConfigKeys.java | 90 +++++++---- .../apache/hadoop/hdfs/HdfsConfiguration.java | 149 ----------------- 8 files changed, 270 insertions(+), 225 deletions(-) create mode 100644 hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/HdfsConfiguration.java delete mode 100644 hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/HdfsConfigurationLoader.java delete mode 100644 hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HdfsConfiguration.java diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java index 8416918b10a..08f25f5d0b4 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DFSClient.java @@ -722,7 +722,7 @@ public class DFSClient implements java.io.Closeable, RemotePeerFactory, static { //Ensure that HDFS Configuration files are loaded before trying to use // the renewer. - HdfsConfigurationLoader.init(); + HdfsConfiguration.init(); } @Override diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java index 8ed892c2742..39cc42b26ca 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/DistributedFileSystem.java @@ -112,7 +112,7 @@ public class DistributedFileSystem extends FileSystem { private boolean verifyChecksum = true; static{ - HdfsConfigurationLoader.init(); + HdfsConfiguration.init(); } public DistributedFileSystem() { diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/HdfsConfiguration.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/HdfsConfiguration.java new file mode 100644 index 00000000000..e93e6f1e825 --- /dev/null +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/HdfsConfiguration.java @@ -0,0 +1,152 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.hadoop.hdfs; + +import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.conf.Configuration; +import org.apache.hadoop.hdfs.client.HdfsClientConfigKeys; + +import static org.apache.hadoop.hdfs.client.HdfsClientConfigKeys.DeprecatedKeys; + +/** + * Adds deprecated keys into the configuration. + */ +@InterfaceAudience.Private +public class HdfsConfiguration extends Configuration { + static { + addDeprecatedKeys(); + + // adds the default resources + Configuration.addDefaultResource("hdfs-default.xml"); + Configuration.addDefaultResource("hdfs-site.xml"); + } + + public HdfsConfiguration() { + super(); + } + + public HdfsConfiguration(boolean loadDefaults) { + super(loadDefaults); + } + + public HdfsConfiguration(Configuration conf) { + super(conf); + } + + /** + * This method is here so that when invoked, HdfsConfiguration is class-loaded + * if it hasn't already been previously loaded. Upon loading the class, the + * static initializer block above will be executed to add the deprecated keys + * and to add the default resources. It is safe for this method to be called + * multiple times as the static initializer block will only get invoked once. + * + * This replaces the previously, dangerous practice of other classes calling + * Configuration.addDefaultResource("hdfs-default.xml") directly without + * loading this class first, thereby skipping the key deprecation. + */ + public static void init() { + } + + private static void addDeprecatedKeys() { + Configuration.addDeprecations(new DeprecationDelta[]{ + new DeprecationDelta("dfs.backup.address", + DeprecatedKeys.DFS_NAMENODE_BACKUP_ADDRESS_KEY), + new DeprecationDelta("dfs.backup.http.address", + DeprecatedKeys.DFS_NAMENODE_BACKUP_HTTP_ADDRESS_KEY), + new DeprecationDelta("dfs.balance.bandwidthPerSec", + DeprecatedKeys.DFS_DATANODE_BALANCE_BANDWIDTHPERSEC_KEY), + new DeprecationDelta("dfs.data.dir", + DeprecatedKeys.DFS_DATANODE_DATA_DIR_KEY), + new DeprecationDelta("dfs.http.address", + HdfsClientConfigKeys.DFS_NAMENODE_HTTP_ADDRESS_KEY), + new DeprecationDelta("dfs.https.address", + HdfsClientConfigKeys.DFS_NAMENODE_HTTPS_ADDRESS_KEY), + new DeprecationDelta("dfs.max.objects", + DeprecatedKeys.DFS_NAMENODE_MAX_OBJECTS_KEY), + new DeprecationDelta("dfs.name.dir", + DeprecatedKeys.DFS_NAMENODE_NAME_DIR_KEY), + new DeprecationDelta("dfs.name.dir.restore", + DeprecatedKeys.DFS_NAMENODE_NAME_DIR_RESTORE_KEY), + new DeprecationDelta("dfs.name.edits.dir", + DeprecatedKeys.DFS_NAMENODE_EDITS_DIR_KEY), + new DeprecationDelta("dfs.read.prefetch.size", + HdfsClientConfigKeys.Read.PREFETCH_SIZE_KEY), + new DeprecationDelta("dfs.safemode.extension", + DeprecatedKeys.DFS_NAMENODE_SAFEMODE_EXTENSION_KEY), + new DeprecationDelta("dfs.safemode.threshold.pct", + DeprecatedKeys.DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_KEY), + new DeprecationDelta("dfs.secondary.http.address", + DeprecatedKeys.DFS_NAMENODE_SECONDARY_HTTP_ADDRESS_KEY), + new DeprecationDelta("dfs.socket.timeout", + HdfsClientConfigKeys.DFS_CLIENT_SOCKET_TIMEOUT_KEY), + new DeprecationDelta("fs.checkpoint.dir", + DeprecatedKeys.DFS_NAMENODE_CHECKPOINT_DIR_KEY), + new DeprecationDelta("fs.checkpoint.edits.dir", + DeprecatedKeys.DFS_NAMENODE_CHECKPOINT_EDITS_DIR_KEY), + new DeprecationDelta("fs.checkpoint.period", + DeprecatedKeys.DFS_NAMENODE_CHECKPOINT_PERIOD_KEY), + new DeprecationDelta("heartbeat.recheck.interval", + DeprecatedKeys.DFS_NAMENODE_HEARTBEAT_RECHECK_INTERVAL_KEY), + new DeprecationDelta("dfs.https.client.keystore.resource", + DeprecatedKeys.DFS_CLIENT_HTTPS_KEYSTORE_RESOURCE_KEY), + new DeprecationDelta("dfs.https.need.client.auth", + DeprecatedKeys.DFS_CLIENT_HTTPS_NEED_AUTH_KEY), + new DeprecationDelta("slave.host.name", + DeprecatedKeys.DFS_DATANODE_HOST_NAME_KEY), + new DeprecationDelta("session.id", + DeprecatedKeys.DFS_METRICS_SESSION_ID_KEY), + new DeprecationDelta("dfs.access.time.precision", + DeprecatedKeys.DFS_NAMENODE_ACCESSTIME_PRECISION_KEY), + new DeprecationDelta("dfs.replication.considerLoad", + DeprecatedKeys.DFS_NAMENODE_REPLICATION_CONSIDERLOAD_KEY), + new DeprecationDelta("dfs.replication.interval", + DeprecatedKeys.DFS_NAMENODE_REPLICATION_INTERVAL_KEY), + new DeprecationDelta("dfs.replication.min", + DeprecatedKeys.DFS_NAMENODE_REPLICATION_MIN_KEY), + new DeprecationDelta("dfs.replication.pending.timeout.sec", + DeprecatedKeys.DFS_NAMENODE_REPLICATION_PENDING_TIMEOUT_SEC_KEY), + new DeprecationDelta("dfs.max-repl-streams", + DeprecatedKeys.DFS_NAMENODE_REPLICATION_MAX_STREAMS_KEY), + new DeprecationDelta("dfs.permissions", + DeprecatedKeys.DFS_PERMISSIONS_ENABLED_KEY), + new DeprecationDelta("dfs.permissions.supergroup", + DeprecatedKeys.DFS_PERMISSIONS_SUPERUSERGROUP_KEY), + new DeprecationDelta("dfs.write.packet.size", + HdfsClientConfigKeys.DFS_CLIENT_WRITE_PACKET_SIZE_KEY), + new DeprecationDelta("dfs.block.size", + HdfsClientConfigKeys.DFS_BLOCK_SIZE_KEY), + new DeprecationDelta("dfs.datanode.max.xcievers", + DeprecatedKeys.DFS_DATANODE_MAX_RECEIVER_THREADS_KEY), + new DeprecationDelta("io.bytes.per.checksum", + HdfsClientConfigKeys.DFS_BYTES_PER_CHECKSUM_KEY), + new DeprecationDelta("dfs.federation.nameservices", + HdfsClientConfigKeys.DFS_NAMESERVICES), + new DeprecationDelta("dfs.federation.nameservice.id", + DeprecatedKeys.DFS_NAMESERVICE_ID), + new DeprecationDelta("dfs.client.file-block-storage-locations.timeout", + HdfsClientConfigKeys. + DFS_CLIENT_FILE_BLOCK_STORAGE_LOCATIONS_TIMEOUT_MS), + }); + } + + public static void main(String[] args) { + init(); + Configuration.dumpDeprecatedKeys(); + } +} diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/HdfsConfigurationLoader.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/HdfsConfigurationLoader.java deleted file mode 100644 index 4a84f061243..00000000000 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/HdfsConfigurationLoader.java +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.hadoop.hdfs; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.hadoop.conf.Configuration; - -/** - * Load default HDFS configuration resources. - */ -@InterfaceAudience.Private -class HdfsConfigurationLoader { - - static { - // adds the default resources - Configuration.addDefaultResource("hdfs-default.xml"); - Configuration.addDefaultResource("hdfs-site.xml"); - } - - /** - * This method is here so that when invoked, default resources are added if - * they haven't already been previously loaded. Upon loading this class, the - * static initializer block above will be executed to add the default - * resources. It is safe for this method to be called multiple times - * as the static initializer block will only get invoked once. - */ - public static void init() { - } -} diff --git a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/client/HdfsClientConfigKeys.java b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/client/HdfsClientConfigKeys.java index e950c10862b..17c3654ad5d 100644 --- a/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/client/HdfsClientConfigKeys.java +++ b/hadoop-hdfs-project/hadoop-hdfs-client/src/main/java/org/apache/hadoop/hdfs/client/HdfsClientConfigKeys.java @@ -155,6 +155,59 @@ public interface HdfsClientConfigKeys { String DFS_USER_HOME_DIR_PREFIX_KEY = "dfs.user.home.dir.prefix"; String DFS_USER_HOME_DIR_PREFIX_DEFAULT = "/user"; + /** + * These are deprecated config keys to client code. + */ + interface DeprecatedKeys { + String DFS_NAMENODE_BACKUP_ADDRESS_KEY = + "dfs.namenode.backup.address"; + String DFS_NAMENODE_BACKUP_HTTP_ADDRESS_KEY = + "dfs.namenode.backup.http-address"; + String DFS_DATANODE_BALANCE_BANDWIDTHPERSEC_KEY = + "dfs.datanode.balance.bandwidthPerSec"; + //Following keys have no defaults + String DFS_DATANODE_DATA_DIR_KEY = "dfs.datanode.data.dir"; + String DFS_NAMENODE_MAX_OBJECTS_KEY = "dfs.namenode.max.objects"; + String DFS_NAMENODE_NAME_DIR_KEY = "dfs.namenode.name.dir"; + String DFS_NAMENODE_NAME_DIR_RESTORE_KEY = "dfs.namenode.name.dir.restore"; + String DFS_NAMENODE_EDITS_DIR_KEY = "dfs.namenode.edits.dir"; + String DFS_NAMENODE_SAFEMODE_EXTENSION_KEY = + "dfs.namenode.safemode.extension"; + String DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_KEY = + "dfs.namenode.safemode.threshold-pct"; + String DFS_NAMENODE_SECONDARY_HTTP_ADDRESS_KEY = + "dfs.namenode.secondary.http-address"; + String DFS_NAMENODE_CHECKPOINT_DIR_KEY = "dfs.namenode.checkpoint.dir"; + String DFS_NAMENODE_CHECKPOINT_EDITS_DIR_KEY = + "dfs.namenode.checkpoint.edits.dir"; + String DFS_NAMENODE_CHECKPOINT_PERIOD_KEY = + "dfs.namenode.checkpoint.period"; + String DFS_NAMENODE_HEARTBEAT_RECHECK_INTERVAL_KEY = + "dfs.namenode.heartbeat.recheck-interval"; + String DFS_CLIENT_HTTPS_KEYSTORE_RESOURCE_KEY = + "dfs.client.https.keystore.resource"; + String DFS_CLIENT_HTTPS_NEED_AUTH_KEY = "dfs.client.https.need-auth"; + String DFS_DATANODE_HOST_NAME_KEY = "dfs.datanode.hostname"; + String DFS_METRICS_SESSION_ID_KEY = "dfs.metrics.session-id"; + String DFS_NAMENODE_ACCESSTIME_PRECISION_KEY = + "dfs.namenode.accesstime.precision"; + String DFS_NAMENODE_REPLICATION_CONSIDERLOAD_KEY = + "dfs.namenode.replication.considerLoad"; + String DFS_NAMENODE_REPLICATION_INTERVAL_KEY = + "dfs.namenode.replication.interval"; + String DFS_NAMENODE_REPLICATION_MIN_KEY = "dfs.namenode.replication.min"; + String DFS_NAMENODE_REPLICATION_PENDING_TIMEOUT_SEC_KEY = + "dfs.namenode.replication.pending.timeout-sec"; + String DFS_NAMENODE_REPLICATION_MAX_STREAMS_KEY = + "dfs.namenode.replication.max-streams"; + String DFS_PERMISSIONS_ENABLED_KEY = "dfs.permissions.enabled"; + String DFS_PERMISSIONS_SUPERUSERGROUP_KEY = + "dfs.permissions.superusergroup"; + String DFS_DATANODE_MAX_RECEIVER_THREADS_KEY = + "dfs.datanode.max.transfer.threads"; + String DFS_NAMESERVICE_ID = "dfs.nameservice.id"; + } + /** dfs.client.retry configuration properties */ interface Retry { String PREFIX = HdfsClientConfigKeys.PREFIX + "retry."; diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index e9e07d4eba0..16418843eca 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -2126,6 +2126,9 @@ Release 2.8.0 - UNRELEASED HDFS-9286. HttpFs does not parse ACL syntax correctly for operation REMOVEACLENTRIES. (Wei-Chiu Chuang via cnauroth) + HDFS-9301. HDFS clients can't construct HdfsConfiguration instances. + (Mingliang Liu via wheat9) + Release 2.7.2 - UNRELEASED INCOMPATIBLE CHANGES diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSConfigKeys.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSConfigKeys.java index 5f9dde09bba..204f9e1f38e 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSConfigKeys.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/DFSConfigKeys.java @@ -78,12 +78,15 @@ public class DFSConfigKeys extends CommonConfigurationKeys { // HA related configuration public static final String DFS_DATANODE_RESTART_REPLICA_EXPIRY_KEY = "dfs.datanode.restart.replica.expiration"; public static final long DFS_DATANODE_RESTART_REPLICA_EXPIRY_DEFAULT = 50; - public static final String DFS_NAMENODE_BACKUP_ADDRESS_KEY = "dfs.namenode.backup.address"; + public static final String DFS_NAMENODE_BACKUP_ADDRESS_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_BACKUP_ADDRESS_KEY; public static final String DFS_NAMENODE_BACKUP_ADDRESS_DEFAULT = "localhost:50100"; - public static final String DFS_NAMENODE_BACKUP_HTTP_ADDRESS_KEY = "dfs.namenode.backup.http-address"; + public static final String DFS_NAMENODE_BACKUP_HTTP_ADDRESS_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_BACKUP_HTTP_ADDRESS_KEY; public static final String DFS_NAMENODE_BACKUP_HTTP_ADDRESS_DEFAULT = "0.0.0.0:50105"; public static final String DFS_NAMENODE_BACKUP_SERVICE_RPC_ADDRESS_KEY = "dfs.namenode.backup.dnrpc-address"; - public static final String DFS_DATANODE_BALANCE_BANDWIDTHPERSEC_KEY = "dfs.datanode.balance.bandwidthPerSec"; + public static final String DFS_DATANODE_BALANCE_BANDWIDTHPERSEC_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_DATANODE_BALANCE_BANDWIDTHPERSEC_KEY; public static final long DFS_DATANODE_BALANCE_BANDWIDTHPERSEC_DEFAULT = 1024*1024; public static final String DFS_DATANODE_BALANCE_MAX_NUM_CONCURRENT_MOVES_KEY = "dfs.datanode.balance.max.concurrent.moves"; public static final int DFS_DATANODE_BALANCE_MAX_NUM_CONCURRENT_MOVES_DEFAULT = 5; @@ -136,11 +139,14 @@ public class DFSConfigKeys extends CommonConfigurationKeys { public static final String DFS_NAMENODE_RPC_BIND_HOST_KEY = "dfs.namenode.rpc-bind-host"; public static final String DFS_NAMENODE_SERVICE_RPC_ADDRESS_KEY = "dfs.namenode.servicerpc-address"; public static final String DFS_NAMENODE_SERVICE_RPC_BIND_HOST_KEY = "dfs.namenode.servicerpc-bind-host"; - public static final String DFS_NAMENODE_MAX_OBJECTS_KEY = "dfs.namenode.max.objects"; + public static final String DFS_NAMENODE_MAX_OBJECTS_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_MAX_OBJECTS_KEY; public static final long DFS_NAMENODE_MAX_OBJECTS_DEFAULT = 0; - public static final String DFS_NAMENODE_SAFEMODE_EXTENSION_KEY = "dfs.namenode.safemode.extension"; + public static final String DFS_NAMENODE_SAFEMODE_EXTENSION_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_SAFEMODE_EXTENSION_KEY; public static final int DFS_NAMENODE_SAFEMODE_EXTENSION_DEFAULT = 30000; - public static final String DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_KEY = "dfs.namenode.safemode.threshold-pct"; + public static final String DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_KEY; public static final float DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_DEFAULT = 0.999f; // set this to a slightly smaller value than // DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_DEFAULT to populate @@ -149,7 +155,8 @@ public class DFSConfigKeys extends CommonConfigurationKeys { "dfs.namenode.replqueue.threshold-pct"; public static final String DFS_NAMENODE_SAFEMODE_MIN_DATANODES_KEY = "dfs.namenode.safemode.min.datanodes"; public static final int DFS_NAMENODE_SAFEMODE_MIN_DATANODES_DEFAULT = 0; - public static final String DFS_NAMENODE_SECONDARY_HTTP_ADDRESS_KEY = "dfs.namenode.secondary.http-address"; + public static final String DFS_NAMENODE_SECONDARY_HTTP_ADDRESS_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_SECONDARY_HTTP_ADDRESS_KEY; public static final String DFS_NAMENODE_SECONDARY_HTTP_ADDRESS_DEFAULT = "0.0.0.0:50090"; public static final String DFS_NAMENODE_SECONDARY_HTTPS_ADDRESS_KEY = "dfs.namenode.secondary.https-address"; public static final String DFS_NAMENODE_SECONDARY_HTTPS_ADDRESS_DEFAULT = "0.0.0.0:50091"; @@ -157,7 +164,8 @@ public class DFSConfigKeys extends CommonConfigurationKeys { public static final double DFS_NAMENODE_CHECKPOINT_QUIET_MULTIPLIER_DEFAULT = 1.5; public static final String DFS_NAMENODE_CHECKPOINT_CHECK_PERIOD_KEY = "dfs.namenode.checkpoint.check.period"; public static final long DFS_NAMENODE_CHECKPOINT_CHECK_PERIOD_DEFAULT = 60; - public static final String DFS_NAMENODE_CHECKPOINT_PERIOD_KEY = "dfs.namenode.checkpoint.period"; + public static final String DFS_NAMENODE_CHECKPOINT_PERIOD_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_CHECKPOINT_PERIOD_KEY; public static final long DFS_NAMENODE_CHECKPOINT_PERIOD_DEFAULT = 3600; public static final String DFS_NAMENODE_CHECKPOINT_TXNS_KEY = "dfs.namenode.checkpoint.txns"; public static final long DFS_NAMENODE_CHECKPOINT_TXNS_DEFAULT = 1000000; @@ -165,25 +173,32 @@ public class DFSConfigKeys extends CommonConfigurationKeys { public static final int DFS_NAMENODE_CHECKPOINT_MAX_RETRIES_DEFAULT = 3; public static final String DFS_NAMENODE_MISSING_CHECKPOINT_PERIODS_BEFORE_SHUTDOWN_KEY = "dfs.namenode.missing.checkpoint.periods.before.shutdown"; public static final int DFS_NAMENODE_MISSING_CHECKPOINT_PERIODS_BEFORE_SHUTDONW_DEFAULT = 3; - public static final String DFS_NAMENODE_HEARTBEAT_RECHECK_INTERVAL_KEY = "dfs.namenode.heartbeat.recheck-interval"; + public static final String DFS_NAMENODE_HEARTBEAT_RECHECK_INTERVAL_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_HEARTBEAT_RECHECK_INTERVAL_KEY; public static final int DFS_NAMENODE_HEARTBEAT_RECHECK_INTERVAL_DEFAULT = 5*60*1000; public static final String DFS_NAMENODE_TOLERATE_HEARTBEAT_MULTIPLIER_KEY = "dfs.namenode.tolerate.heartbeat.multiplier"; public static final int DFS_NAMENODE_TOLERATE_HEARTBEAT_MULTIPLIER_DEFAULT = 4; - public static final String DFS_NAMENODE_ACCESSTIME_PRECISION_KEY = "dfs.namenode.accesstime.precision"; + public static final String DFS_NAMENODE_ACCESSTIME_PRECISION_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_ACCESSTIME_PRECISION_KEY; public static final long DFS_NAMENODE_ACCESSTIME_PRECISION_DEFAULT = 3600000; - public static final String DFS_NAMENODE_REPLICATION_CONSIDERLOAD_KEY = "dfs.namenode.replication.considerLoad"; + public static final String DFS_NAMENODE_REPLICATION_CONSIDERLOAD_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_REPLICATION_CONSIDERLOAD_KEY; public static final boolean DFS_NAMENODE_REPLICATION_CONSIDERLOAD_DEFAULT = true; - public static final String DFS_NAMENODE_REPLICATION_INTERVAL_KEY = "dfs.namenode.replication.interval"; + public static final String DFS_NAMENODE_REPLICATION_INTERVAL_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_REPLICATION_INTERVAL_KEY; public static final int DFS_NAMENODE_REPLICATION_INTERVAL_DEFAULT = 3; - public static final String DFS_NAMENODE_REPLICATION_MIN_KEY = "dfs.namenode.replication.min"; + public static final String DFS_NAMENODE_REPLICATION_MIN_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_REPLICATION_MIN_KEY; public static final int DFS_NAMENODE_REPLICATION_MIN_DEFAULT = 1; public static final String DFS_NAMENODE_STRIPE_MIN_KEY = "dfs.namenode.stripe.min"; public static final int DFS_NAMENODE_STRIPE_MIN_DEFAULT = 1; public static final String DFS_NAMENODE_SAFEMODE_REPLICATION_MIN_KEY = "dfs.namenode.safemode.replication.min"; - public static final String DFS_NAMENODE_REPLICATION_PENDING_TIMEOUT_SEC_KEY = "dfs.namenode.replication.pending.timeout-sec"; + public static final String DFS_NAMENODE_REPLICATION_PENDING_TIMEOUT_SEC_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_REPLICATION_PENDING_TIMEOUT_SEC_KEY; public static final int DFS_NAMENODE_REPLICATION_PENDING_TIMEOUT_SEC_DEFAULT = -1; - public static final String DFS_NAMENODE_REPLICATION_MAX_STREAMS_KEY = "dfs.namenode.replication.max-streams"; + public static final String DFS_NAMENODE_REPLICATION_MAX_STREAMS_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_REPLICATION_MAX_STREAMS_KEY; public static final int DFS_NAMENODE_REPLICATION_MAX_STREAMS_DEFAULT = 2; public static final String DFS_NAMENODE_REPLICATION_STREAMS_HARD_LIMIT_KEY = "dfs.namenode.replication.max-streams-hard-limit"; public static final int DFS_NAMENODE_REPLICATION_STREAMS_HARD_LIMIT_DEFAULT = 4; @@ -200,9 +215,11 @@ public class DFSConfigKeys extends CommonConfigurationKeys { @Deprecated public static final String DFS_WEBHDFS_USER_PATTERN_DEFAULT = HdfsClientConfigKeys.DFS_WEBHDFS_USER_PATTERN_DEFAULT; - public static final String DFS_PERMISSIONS_ENABLED_KEY = "dfs.permissions.enabled"; + public static final String DFS_PERMISSIONS_ENABLED_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_PERMISSIONS_ENABLED_KEY; public static final boolean DFS_PERMISSIONS_ENABLED_DEFAULT = true; - public static final String DFS_PERMISSIONS_SUPERUSERGROUP_KEY = "dfs.permissions.superusergroup"; + public static final String DFS_PERMISSIONS_SUPERUSERGROUP_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_PERMISSIONS_SUPERUSERGROUP_KEY; public static final String DFS_PERMISSIONS_SUPERUSERGROUP_DEFAULT = "supergroup"; public static final String DFS_NAMENODE_ACLS_ENABLED_KEY = "dfs.namenode.acls.enabled"; public static final boolean DFS_NAMENODE_ACLS_ENABLED_DEFAULT = false; @@ -216,7 +233,8 @@ public class DFSConfigKeys extends CommonConfigurationKeys { public static final String DFS_SERVER_HTTPS_KEYSTORE_LOCATION_KEY = "ssl.server.keystore.location"; public static final String DFS_SERVER_HTTPS_TRUSTSTORE_LOCATION_KEY = "ssl.server.truststore.location"; public static final String DFS_SERVER_HTTPS_TRUSTSTORE_PASSWORD_KEY = "ssl.server.truststore.password"; - public static final String DFS_NAMENODE_NAME_DIR_RESTORE_KEY = "dfs.namenode.name.dir.restore"; + public static final String DFS_NAMENODE_NAME_DIR_RESTORE_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_NAME_DIR_RESTORE_KEY; public static final boolean DFS_NAMENODE_NAME_DIR_RESTORE_DEFAULT = false; public static final String DFS_NAMENODE_SUPPORT_ALLOW_FORMAT_KEY = "dfs.namenode.support.allow.format"; public static final boolean DFS_NAMENODE_SUPPORT_ALLOW_FORMAT_DEFAULT = true; @@ -343,26 +361,33 @@ public class DFSConfigKeys extends CommonConfigurationKeys { public static final int DFS_UPGRADE_DOMAIN_FACTOR_DEFAULT = DFS_REPLICATION_DEFAULT; //Following keys have no defaults - public static final String DFS_DATANODE_DATA_DIR_KEY = "dfs.datanode.data.dir"; + public static final String DFS_DATANODE_DATA_DIR_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_DATANODE_DATA_DIR_KEY; public static final int DFS_NAMENODE_HTTPS_PORT_DEFAULT = HdfsClientConfigKeys.DFS_NAMENODE_HTTPS_PORT_DEFAULT; public static final String DFS_NAMENODE_HTTPS_ADDRESS_KEY = HdfsClientConfigKeys.DFS_NAMENODE_HTTPS_ADDRESS_KEY; public static final String DFS_NAMENODE_HTTPS_BIND_HOST_KEY = "dfs.namenode.https-bind-host"; public static final String DFS_NAMENODE_HTTPS_ADDRESS_DEFAULT = "0.0.0.0:" + DFS_NAMENODE_HTTPS_PORT_DEFAULT; - public static final String DFS_NAMENODE_NAME_DIR_KEY = "dfs.namenode.name.dir"; - public static final String DFS_NAMENODE_EDITS_DIR_KEY = "dfs.namenode.edits.dir"; + public static final String DFS_NAMENODE_NAME_DIR_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_NAME_DIR_KEY; + public static final String DFS_NAMENODE_EDITS_DIR_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_EDITS_DIR_KEY; public static final String DFS_NAMENODE_SHARED_EDITS_DIR_KEY = "dfs.namenode.shared.edits.dir"; public static final String DFS_NAMENODE_EDITS_PLUGIN_PREFIX = "dfs.namenode.edits.journal-plugin"; public static final String DFS_NAMENODE_EDITS_DIR_REQUIRED_KEY = "dfs.namenode.edits.dir.required"; public static final String DFS_NAMENODE_EDITS_DIR_DEFAULT = "file:///tmp/hadoop/dfs/name"; - public static final String DFS_METRICS_SESSION_ID_KEY = "dfs.metrics.session-id"; + public static final String DFS_METRICS_SESSION_ID_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_METRICS_SESSION_ID_KEY; public static final String DFS_METRICS_PERCENTILES_INTERVALS_KEY = "dfs.metrics.percentiles.intervals"; - public static final String DFS_DATANODE_HOST_NAME_KEY = "dfs.datanode.hostname"; + public static final String DFS_DATANODE_HOST_NAME_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_DATANODE_HOST_NAME_KEY; public static final String DFS_NAMENODE_HOSTS_KEY = "dfs.namenode.hosts"; public static final String DFS_NAMENODE_HOSTS_EXCLUDE_KEY = "dfs.namenode.hosts.exclude"; - public static final String DFS_NAMENODE_CHECKPOINT_DIR_KEY = "dfs.namenode.checkpoint.dir"; - public static final String DFS_NAMENODE_CHECKPOINT_EDITS_DIR_KEY = "dfs.namenode.checkpoint.edits.dir"; + public static final String DFS_NAMENODE_CHECKPOINT_DIR_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_CHECKPOINT_DIR_KEY; + public static final String DFS_NAMENODE_CHECKPOINT_EDITS_DIR_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMENODE_CHECKPOINT_EDITS_DIR_KEY; public static final String DFS_HOSTS = "dfs.hosts"; public static final String DFS_HOSTS_EXCLUDE = "dfs.hosts.exclude"; public static final String DFS_NAMENODE_AUDIT_LOGGERS_KEY = "dfs.namenode.audit.loggers"; @@ -435,7 +460,8 @@ public class DFSConfigKeys extends CommonConfigurationKeys { public static final String DFS_DATANODE_HTTP_ADDRESS_KEY = "dfs.datanode.http.address"; public static final int DFS_DATANODE_HTTP_DEFAULT_PORT = 50075; public static final String DFS_DATANODE_HTTP_ADDRESS_DEFAULT = "0.0.0.0:" + DFS_DATANODE_HTTP_DEFAULT_PORT; - public static final String DFS_DATANODE_MAX_RECEIVER_THREADS_KEY = "dfs.datanode.max.transfer.threads"; + public static final String DFS_DATANODE_MAX_RECEIVER_THREADS_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_DATANODE_MAX_RECEIVER_THREADS_KEY; public static final int DFS_DATANODE_MAX_RECEIVER_THREADS_DEFAULT = 4096; public static final String DFS_DATANODE_SCAN_PERIOD_HOURS_KEY = "dfs.datanode.scan.period.hours"; public static final int DFS_DATANODE_SCAN_PERIOD_HOURS_DEFAULT = 21 * 24; // 3 weeks. @@ -581,8 +607,10 @@ public class DFSConfigKeys extends CommonConfigurationKeys { public static final int DFS_NAMENODE_NAME_CACHE_THRESHOLD_DEFAULT = 10; public static final String DFS_NAMENODE_LEGACY_OIV_IMAGE_DIR_KEY = "dfs.namenode.legacy-oiv-image.dir"; - public static final String DFS_NAMESERVICES = "dfs.nameservices"; - public static final String DFS_NAMESERVICE_ID = "dfs.nameservice.id"; + public static final String DFS_NAMESERVICES = + HdfsClientConfigKeys.DFS_NAMESERVICES; + public static final String DFS_NAMESERVICE_ID = + HdfsClientConfigKeys.DeprecatedKeys.DFS_NAMESERVICE_ID; public static final String DFS_INTERNAL_NAMESERVICES_KEY = "dfs.internal.nameservices"; public static final String DFS_NAMENODE_RESOURCE_CHECK_INTERVAL_KEY = "dfs.namenode.resource.check.interval"; public static final int DFS_NAMENODE_RESOURCE_CHECK_INTERVAL_DEFAULT = 5000; @@ -1130,9 +1158,11 @@ public class DFSConfigKeys extends CommonConfigurationKeys { public static final long DFS_CLIENT_DATANODE_RESTART_TIMEOUT_DEFAULT = HdfsClientConfigKeys.DFS_CLIENT_DATANODE_RESTART_TIMEOUT_DEFAULT; - public static final String DFS_CLIENT_HTTPS_KEYSTORE_RESOURCE_KEY = "dfs.client.https.keystore.resource"; + public static final String DFS_CLIENT_HTTPS_KEYSTORE_RESOURCE_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_CLIENT_HTTPS_KEYSTORE_RESOURCE_KEY; public static final String DFS_CLIENT_HTTPS_KEYSTORE_RESOURCE_DEFAULT = "ssl-client.xml"; - public static final String DFS_CLIENT_HTTPS_NEED_AUTH_KEY = "dfs.client.https.need-auth"; + public static final String DFS_CLIENT_HTTPS_NEED_AUTH_KEY = + HdfsClientConfigKeys.DeprecatedKeys.DFS_CLIENT_HTTPS_NEED_AUTH_KEY; public static final boolean DFS_CLIENT_HTTPS_NEED_AUTH_DEFAULT = false; // Much code in hdfs is not yet updated to use these keys. diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HdfsConfiguration.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HdfsConfiguration.java deleted file mode 100644 index b6bf6cdab6d..00000000000 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/HdfsConfiguration.java +++ /dev/null @@ -1,149 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.hadoop.hdfs; - -import org.apache.hadoop.classification.InterfaceAudience; -import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hdfs.client.HdfsClientConfigKeys; - -/** - * Adds deprecated keys into the configuration. - */ -@InterfaceAudience.Private -public class HdfsConfiguration extends Configuration { - static { - addDeprecatedKeys(); - - // adds the default resources - HdfsConfigurationLoader.init(); - } - - public HdfsConfiguration() { - super(); - } - - public HdfsConfiguration(boolean loadDefaults) { - super(loadDefaults); - } - - public HdfsConfiguration(Configuration conf) { - super(conf); - } - - /** - * This method is here so that when invoked, HdfsConfiguration is class-loaded if - * it hasn't already been previously loaded. Upon loading the class, the static - * initializer block above will be executed to add the deprecated keys and to add - * the default resources via {@link HdfsConfigurationLoader#init()}. It is - * safe for this method to be called multiple times as the static initializer - * block will only get invoked once. - * - * This replaces the previously, dangerous practice of other classes calling - * Configuration.addDefaultResource("hdfs-default.xml") directly without loading - * HdfsConfiguration class first, thereby skipping the key deprecation - */ - public static void init() { - } - - private static void addDeprecatedKeys() { - Configuration.addDeprecations(new DeprecationDelta[] { - new DeprecationDelta("dfs.backup.address", - DFSConfigKeys.DFS_NAMENODE_BACKUP_ADDRESS_KEY), - new DeprecationDelta("dfs.backup.http.address", - DFSConfigKeys.DFS_NAMENODE_BACKUP_HTTP_ADDRESS_KEY), - new DeprecationDelta("dfs.balance.bandwidthPerSec", - DFSConfigKeys.DFS_DATANODE_BALANCE_BANDWIDTHPERSEC_KEY), - new DeprecationDelta("dfs.data.dir", - DFSConfigKeys.DFS_DATANODE_DATA_DIR_KEY), - new DeprecationDelta("dfs.http.address", - DFSConfigKeys.DFS_NAMENODE_HTTP_ADDRESS_KEY), - new DeprecationDelta("dfs.https.address", - DFSConfigKeys.DFS_NAMENODE_HTTPS_ADDRESS_KEY), - new DeprecationDelta("dfs.max.objects", - DFSConfigKeys.DFS_NAMENODE_MAX_OBJECTS_KEY), - new DeprecationDelta("dfs.name.dir", - DFSConfigKeys.DFS_NAMENODE_NAME_DIR_KEY), - new DeprecationDelta("dfs.name.dir.restore", - DFSConfigKeys.DFS_NAMENODE_NAME_DIR_RESTORE_KEY), - new DeprecationDelta("dfs.name.edits.dir", - DFSConfigKeys.DFS_NAMENODE_EDITS_DIR_KEY), - new DeprecationDelta("dfs.read.prefetch.size", - HdfsClientConfigKeys.Read.PREFETCH_SIZE_KEY), - new DeprecationDelta("dfs.safemode.extension", - DFSConfigKeys.DFS_NAMENODE_SAFEMODE_EXTENSION_KEY), - new DeprecationDelta("dfs.safemode.threshold.pct", - DFSConfigKeys.DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_KEY), - new DeprecationDelta("dfs.secondary.http.address", - DFSConfigKeys.DFS_NAMENODE_SECONDARY_HTTP_ADDRESS_KEY), - new DeprecationDelta("dfs.socket.timeout", - HdfsClientConfigKeys.DFS_CLIENT_SOCKET_TIMEOUT_KEY), - new DeprecationDelta("fs.checkpoint.dir", - DFSConfigKeys.DFS_NAMENODE_CHECKPOINT_DIR_KEY), - new DeprecationDelta("fs.checkpoint.edits.dir", - DFSConfigKeys.DFS_NAMENODE_CHECKPOINT_EDITS_DIR_KEY), - new DeprecationDelta("fs.checkpoint.period", - DFSConfigKeys.DFS_NAMENODE_CHECKPOINT_PERIOD_KEY), - new DeprecationDelta("heartbeat.recheck.interval", - DFSConfigKeys.DFS_NAMENODE_HEARTBEAT_RECHECK_INTERVAL_KEY), - new DeprecationDelta("dfs.https.client.keystore.resource", - DFSConfigKeys.DFS_CLIENT_HTTPS_KEYSTORE_RESOURCE_KEY), - new DeprecationDelta("dfs.https.need.client.auth", - DFSConfigKeys.DFS_CLIENT_HTTPS_NEED_AUTH_KEY), - new DeprecationDelta("slave.host.name", - DFSConfigKeys.DFS_DATANODE_HOST_NAME_KEY), - new DeprecationDelta("session.id", - DFSConfigKeys.DFS_METRICS_SESSION_ID_KEY), - new DeprecationDelta("dfs.access.time.precision", - DFSConfigKeys.DFS_NAMENODE_ACCESSTIME_PRECISION_KEY), - new DeprecationDelta("dfs.replication.considerLoad", - DFSConfigKeys.DFS_NAMENODE_REPLICATION_CONSIDERLOAD_KEY), - new DeprecationDelta("dfs.replication.interval", - DFSConfigKeys.DFS_NAMENODE_REPLICATION_INTERVAL_KEY), - new DeprecationDelta("dfs.replication.min", - DFSConfigKeys.DFS_NAMENODE_REPLICATION_MIN_KEY), - new DeprecationDelta("dfs.replication.pending.timeout.sec", - DFSConfigKeys.DFS_NAMENODE_REPLICATION_PENDING_TIMEOUT_SEC_KEY), - new DeprecationDelta("dfs.max-repl-streams", - DFSConfigKeys.DFS_NAMENODE_REPLICATION_MAX_STREAMS_KEY), - new DeprecationDelta("dfs.permissions", - DFSConfigKeys.DFS_PERMISSIONS_ENABLED_KEY), - new DeprecationDelta("dfs.permissions.supergroup", - DFSConfigKeys.DFS_PERMISSIONS_SUPERUSERGROUP_KEY), - new DeprecationDelta("dfs.write.packet.size", - HdfsClientConfigKeys.DFS_CLIENT_WRITE_PACKET_SIZE_KEY), - new DeprecationDelta("dfs.block.size", - DFSConfigKeys.DFS_BLOCK_SIZE_KEY), - new DeprecationDelta("dfs.datanode.max.xcievers", - DFSConfigKeys.DFS_DATANODE_MAX_RECEIVER_THREADS_KEY), - new DeprecationDelta("io.bytes.per.checksum", - HdfsClientConfigKeys.DFS_BYTES_PER_CHECKSUM_KEY), - new DeprecationDelta("dfs.federation.nameservices", - DFSConfigKeys.DFS_NAMESERVICES), - new DeprecationDelta("dfs.federation.nameservice.id", - DFSConfigKeys.DFS_NAMESERVICE_ID), - new DeprecationDelta("dfs.client.file-block-storage-locations.timeout", - HdfsClientConfigKeys.DFS_CLIENT_FILE_BLOCK_STORAGE_LOCATIONS_TIMEOUT_MS), - }); - } - - public static void main(String[] args) { - init(); - Configuration.dumpDeprecatedKeys(); - } -}