|
@@ -38,8 +38,8 @@ import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_IPC_ADDRESS_KEY;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_KERBEROS_PRINCIPAL_KEY;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_KERBEROS_PRINCIPAL_KEY;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_KEYTAB_FILE_KEY;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_KEYTAB_FILE_KEY;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_MAX_LOCKED_MEMORY_KEY;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_MAX_LOCKED_MEMORY_KEY;
|
|
-import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_NETWORK_COUNTS_CACHE_MAX_SIZE_KEY;
|
|
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_NETWORK_COUNTS_CACHE_MAX_SIZE_DEFAULT;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_NETWORK_COUNTS_CACHE_MAX_SIZE_DEFAULT;
|
|
|
|
+import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_NETWORK_COUNTS_CACHE_MAX_SIZE_KEY;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_PLUGINS_KEY;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_PLUGINS_KEY;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_STARTUP_KEY;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_DATANODE_STARTUP_KEY;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_MAX_NUM_BLOCKS_TO_LOG_DEFAULT;
|
|
import static org.apache.hadoop.hdfs.DFSConfigKeys.DFS_MAX_NUM_BLOCKS_TO_LOG_DEFAULT;
|
|
@@ -87,10 +87,6 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
import javax.management.ObjectName;
|
|
import javax.management.ObjectName;
|
|
|
|
|
|
-import com.google.common.cache.CacheBuilder;
|
|
|
|
-import com.google.common.cache.CacheLoader;
|
|
|
|
-import com.google.common.cache.LoadingCache;
|
|
|
|
-import com.google.common.collect.Lists;
|
|
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.apache.hadoop.classification.InterfaceAudience;
|
|
import org.apache.hadoop.classification.InterfaceAudience;
|
|
@@ -102,13 +98,14 @@ import org.apache.hadoop.fs.CommonConfigurationKeys;
|
|
import org.apache.hadoop.fs.FileSystem;
|
|
import org.apache.hadoop.fs.FileSystem;
|
|
import org.apache.hadoop.fs.LocalFileSystem;
|
|
import org.apache.hadoop.fs.LocalFileSystem;
|
|
import org.apache.hadoop.fs.Path;
|
|
import org.apache.hadoop.fs.Path;
|
|
-import org.apache.hadoop.fs.permission.FsPermission;
|
|
|
|
import org.apache.hadoop.fs.StorageType;
|
|
import org.apache.hadoop.fs.StorageType;
|
|
-import org.apache.hadoop.hdfs.client.BlockReportOptions;
|
|
|
|
|
|
+import org.apache.hadoop.fs.permission.FsPermission;
|
|
import org.apache.hadoop.hdfs.DFSConfigKeys;
|
|
import org.apache.hadoop.hdfs.DFSConfigKeys;
|
|
import org.apache.hadoop.hdfs.DFSUtil;
|
|
import org.apache.hadoop.hdfs.DFSUtil;
|
|
import org.apache.hadoop.hdfs.HDFSPolicyProvider;
|
|
import org.apache.hadoop.hdfs.HDFSPolicyProvider;
|
|
import org.apache.hadoop.hdfs.HdfsConfiguration;
|
|
import org.apache.hadoop.hdfs.HdfsConfiguration;
|
|
|
|
+import org.apache.hadoop.hdfs.client.BlockReportOptions;
|
|
|
|
+import org.apache.hadoop.hdfs.client.HdfsClientConfigKeys;
|
|
import org.apache.hadoop.hdfs.net.DomainPeerServer;
|
|
import org.apache.hadoop.hdfs.net.DomainPeerServer;
|
|
import org.apache.hadoop.hdfs.net.TcpPeerServer;
|
|
import org.apache.hadoop.hdfs.net.TcpPeerServer;
|
|
import org.apache.hadoop.hdfs.protocol.Block;
|
|
import org.apache.hadoop.hdfs.protocol.Block;
|
|
@@ -142,8 +139,8 @@ import org.apache.hadoop.hdfs.protocolPB.InterDatanodeProtocolTranslatorPB;
|
|
import org.apache.hadoop.hdfs.protocolPB.PBHelper;
|
|
import org.apache.hadoop.hdfs.protocolPB.PBHelper;
|
|
import org.apache.hadoop.hdfs.security.token.block.BlockPoolTokenSecretManager;
|
|
import org.apache.hadoop.hdfs.security.token.block.BlockPoolTokenSecretManager;
|
|
import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;
|
|
import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier;
|
|
-import org.apache.hadoop.hdfs.security.token.block.BlockTokenSecretManager;
|
|
|
|
import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode;
|
|
import org.apache.hadoop.hdfs.security.token.block.BlockTokenIdentifier.AccessMode;
|
|
|
|
+import org.apache.hadoop.hdfs.security.token.block.BlockTokenSecretManager;
|
|
import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;
|
|
import org.apache.hadoop.hdfs.security.token.block.DataEncryptionKey;
|
|
import org.apache.hadoop.hdfs.security.token.block.ExportedBlockKeys;
|
|
import org.apache.hadoop.hdfs.security.token.block.ExportedBlockKeys;
|
|
import org.apache.hadoop.hdfs.security.token.block.InvalidBlockTokenException;
|
|
import org.apache.hadoop.hdfs.security.token.block.InvalidBlockTokenException;
|
|
@@ -186,7 +183,10 @@ import org.apache.hadoop.security.UserGroupInformation.AuthenticationMethod;
|
|
import org.apache.hadoop.security.authorize.AccessControlList;
|
|
import org.apache.hadoop.security.authorize.AccessControlList;
|
|
import org.apache.hadoop.security.token.Token;
|
|
import org.apache.hadoop.security.token.Token;
|
|
import org.apache.hadoop.security.token.TokenIdentifier;
|
|
import org.apache.hadoop.security.token.TokenIdentifier;
|
|
|
|
+import org.apache.hadoop.tracing.SpanReceiverHost;
|
|
|
|
+import org.apache.hadoop.tracing.SpanReceiverInfo;
|
|
import org.apache.hadoop.tracing.TraceAdminPB.TraceAdminService;
|
|
import org.apache.hadoop.tracing.TraceAdminPB.TraceAdminService;
|
|
|
|
+import org.apache.hadoop.tracing.TraceAdminProtocol;
|
|
import org.apache.hadoop.tracing.TraceAdminProtocolPB;
|
|
import org.apache.hadoop.tracing.TraceAdminProtocolPB;
|
|
import org.apache.hadoop.tracing.TraceAdminProtocolServerSideTranslatorPB;
|
|
import org.apache.hadoop.tracing.TraceAdminProtocolServerSideTranslatorPB;
|
|
import org.apache.hadoop.util.Daemon;
|
|
import org.apache.hadoop.util.Daemon;
|
|
@@ -198,14 +198,15 @@ import org.apache.hadoop.util.ServicePlugin;
|
|
import org.apache.hadoop.util.StringUtils;
|
|
import org.apache.hadoop.util.StringUtils;
|
|
import org.apache.hadoop.util.Time;
|
|
import org.apache.hadoop.util.Time;
|
|
import org.apache.hadoop.util.VersionInfo;
|
|
import org.apache.hadoop.util.VersionInfo;
|
|
-import org.apache.hadoop.tracing.SpanReceiverHost;
|
|
|
|
-import org.apache.hadoop.tracing.SpanReceiverInfo;
|
|
|
|
-import org.apache.hadoop.tracing.TraceAdminProtocol;
|
|
|
|
import org.mortbay.util.ajax.JSON;
|
|
import org.mortbay.util.ajax.JSON;
|
|
|
|
|
|
import com.google.common.annotations.VisibleForTesting;
|
|
import com.google.common.annotations.VisibleForTesting;
|
|
import com.google.common.base.Joiner;
|
|
import com.google.common.base.Joiner;
|
|
import com.google.common.base.Preconditions;
|
|
import com.google.common.base.Preconditions;
|
|
|
|
+import com.google.common.cache.CacheBuilder;
|
|
|
|
+import com.google.common.cache.CacheLoader;
|
|
|
|
+import com.google.common.cache.LoadingCache;
|
|
|
|
+import com.google.common.collect.Lists;
|
|
import com.google.protobuf.BlockingService;
|
|
import com.google.protobuf.BlockingService;
|
|
|
|
|
|
/**********************************************************
|
|
/**********************************************************
|
|
@@ -410,8 +411,8 @@ public class DataNode extends ReconfigurableBase
|
|
conf.get("hadoop.hdfs.configuration.version", "UNSPECIFIED");
|
|
conf.get("hadoop.hdfs.configuration.version", "UNSPECIFIED");
|
|
|
|
|
|
// Determine whether we should try to pass file descriptors to clients.
|
|
// Determine whether we should try to pass file descriptors to clients.
|
|
- if (conf.getBoolean(DFSConfigKeys.DFS_CLIENT_READ_SHORTCIRCUIT_KEY,
|
|
|
|
- DFSConfigKeys.DFS_CLIENT_READ_SHORTCIRCUIT_DEFAULT)) {
|
|
|
|
|
|
+ if (conf.getBoolean(HdfsClientConfigKeys.Read.ShortCircuit.KEY,
|
|
|
|
+ HdfsClientConfigKeys.Read.ShortCircuit.DEFAULT)) {
|
|
String reason = DomainSocket.getLoadingFailureReason();
|
|
String reason = DomainSocket.getLoadingFailureReason();
|
|
if (reason != null) {
|
|
if (reason != null) {
|
|
LOG.warn("File descriptor passing is disabled because " + reason);
|
|
LOG.warn("File descriptor passing is disabled because " + reason);
|
|
@@ -927,8 +928,8 @@ public class DataNode extends ReconfigurableBase
|
|
this.dataXceiverServer = new Daemon(threadGroup, xserver);
|
|
this.dataXceiverServer = new Daemon(threadGroup, xserver);
|
|
this.threadGroup.setDaemon(true); // auto destroy when empty
|
|
this.threadGroup.setDaemon(true); // auto destroy when empty
|
|
|
|
|
|
- if (conf.getBoolean(DFSConfigKeys.DFS_CLIENT_READ_SHORTCIRCUIT_KEY,
|
|
|
|
- DFSConfigKeys.DFS_CLIENT_READ_SHORTCIRCUIT_DEFAULT) ||
|
|
|
|
|
|
+ if (conf.getBoolean(HdfsClientConfigKeys.Read.ShortCircuit.KEY,
|
|
|
|
+ HdfsClientConfigKeys.Read.ShortCircuit.DEFAULT) ||
|
|
conf.getBoolean(DFSConfigKeys.DFS_CLIENT_DOMAIN_SOCKET_DATA_TRAFFIC,
|
|
conf.getBoolean(DFSConfigKeys.DFS_CLIENT_DOMAIN_SOCKET_DATA_TRAFFIC,
|
|
DFSConfigKeys.DFS_CLIENT_DOMAIN_SOCKET_DATA_TRAFFIC_DEFAULT)) {
|
|
DFSConfigKeys.DFS_CLIENT_DOMAIN_SOCKET_DATA_TRAFFIC_DEFAULT)) {
|
|
DomainPeerServer domainPeerServer =
|
|
DomainPeerServer domainPeerServer =
|
|
@@ -943,14 +944,14 @@ public class DataNode extends ReconfigurableBase
|
|
this.shortCircuitRegistry = new ShortCircuitRegistry(conf);
|
|
this.shortCircuitRegistry = new ShortCircuitRegistry(conf);
|
|
}
|
|
}
|
|
|
|
|
|
- static DomainPeerServer getDomainPeerServer(Configuration conf,
|
|
|
|
|
|
+ private static DomainPeerServer getDomainPeerServer(Configuration conf,
|
|
int port) throws IOException {
|
|
int port) throws IOException {
|
|
String domainSocketPath =
|
|
String domainSocketPath =
|
|
conf.getTrimmed(DFSConfigKeys.DFS_DOMAIN_SOCKET_PATH_KEY,
|
|
conf.getTrimmed(DFSConfigKeys.DFS_DOMAIN_SOCKET_PATH_KEY,
|
|
DFSConfigKeys.DFS_DOMAIN_SOCKET_PATH_DEFAULT);
|
|
DFSConfigKeys.DFS_DOMAIN_SOCKET_PATH_DEFAULT);
|
|
if (domainSocketPath.isEmpty()) {
|
|
if (domainSocketPath.isEmpty()) {
|
|
- if (conf.getBoolean(DFSConfigKeys.DFS_CLIENT_READ_SHORTCIRCUIT_KEY,
|
|
|
|
- DFSConfigKeys.DFS_CLIENT_READ_SHORTCIRCUIT_DEFAULT) &&
|
|
|
|
|
|
+ if (conf.getBoolean(HdfsClientConfigKeys.Read.ShortCircuit.KEY,
|
|
|
|
+ HdfsClientConfigKeys.Read.ShortCircuit.DEFAULT) &&
|
|
(!conf.getBoolean(DFSConfigKeys.DFS_CLIENT_USE_LEGACY_BLOCKREADERLOCAL,
|
|
(!conf.getBoolean(DFSConfigKeys.DFS_CLIENT_USE_LEGACY_BLOCKREADERLOCAL,
|
|
DFSConfigKeys.DFS_CLIENT_USE_LEGACY_BLOCKREADERLOCAL_DEFAULT))) {
|
|
DFSConfigKeys.DFS_CLIENT_USE_LEGACY_BLOCKREADERLOCAL_DEFAULT))) {
|
|
LOG.warn("Although short-circuit local reads are configured, " +
|
|
LOG.warn("Although short-circuit local reads are configured, " +
|