001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018 package org.apache.hadoop.hdfs.protocol;
019
020 import org.apache.hadoop.classification.InterfaceAudience;
021 import org.apache.hadoop.fs.Path;
022 import org.apache.hadoop.hdfs.DFSConfigKeys;
023 import org.apache.hadoop.hdfs.DFSUtil;
024 import org.apache.hadoop.hdfs.HdfsConfiguration;
025
026 /************************************
027 * Some handy constants
028 *
029 ************************************/
030 @InterfaceAudience.Private
031 public class HdfsConstants {
032 /* Hidden constructor */
033 protected HdfsConstants() {
034 }
035
036 /**
037 * HDFS Protocol Names:
038 */
039 public static final String CLIENT_NAMENODE_PROTOCOL_NAME =
040 "org.apache.hadoop.hdfs.protocol.ClientProtocol";
041 public static final String CLIENT_DATANODE_PROTOCOL_NAME =
042 "org.apache.hadoop.hdfs.protocol.ClientDatanodeProtocol";
043
044
045 public static int MIN_BLOCKS_FOR_WRITE = 5;
046
047 // Long that indicates "leave current quota unchanged"
048 public static final long QUOTA_DONT_SET = Long.MAX_VALUE;
049 public static final long QUOTA_RESET = -1L;
050
051 //
052 // Timeouts, constants
053 //
054 public static final long LEASE_SOFTLIMIT_PERIOD = 60 * 1000;
055 public static final long LEASE_HARDLIMIT_PERIOD = 60 * LEASE_SOFTLIMIT_PERIOD;
056 public static final long LEASE_RECOVER_PERIOD = 10 * 1000; // in ms
057
058 // We need to limit the length and depth of a path in the filesystem.
059 // HADOOP-438
060 // Currently we set the maximum length to 8k characters and the maximum depth
061 // to 1k.
062 public static int MAX_PATH_LENGTH = 8000;
063 public static int MAX_PATH_DEPTH = 1000;
064
065 // TODO should be conf injected?
066 public static final int DEFAULT_DATA_SOCKET_SIZE = 128 * 1024;
067 public static final int IO_FILE_BUFFER_SIZE = new HdfsConfiguration().getInt(
068 DFSConfigKeys.IO_FILE_BUFFER_SIZE_KEY,
069 DFSConfigKeys.IO_FILE_BUFFER_SIZE_DEFAULT);
070 // Used for writing header etc.
071 public static final int SMALL_BUFFER_SIZE = Math.min(IO_FILE_BUFFER_SIZE / 2,
072 512);
073
074 public static final int BYTES_IN_INTEGER = Integer.SIZE / Byte.SIZE;
075
076 // SafeMode actions
077 public static enum SafeModeAction {
078 SAFEMODE_LEAVE, SAFEMODE_ENTER, SAFEMODE_GET;
079 }
080
081 // type of the datanode report
082 public static enum DatanodeReportType {
083 ALL, LIVE, DEAD
084 }
085
086 // An invalid transaction ID that will never be seen in a real namesystem.
087 public static final long INVALID_TXID = -12345;
088
089 // Number of generation stamps reserved for legacy blocks.
090 public static final long RESERVED_GENERATION_STAMPS_V1 =
091 1024L * 1024 * 1024 * 1024;
092
093 /**
094 * URI Scheme for hdfs://namenode/ URIs.
095 */
096 public static final String HDFS_URI_SCHEME = "hdfs";
097
098 /**
099 * A prefix put before the namenode URI inside the "service" field
100 * of a delgation token, indicating that the URI is a logical (HA)
101 * URI.
102 */
103 public static final String HA_DT_SERVICE_PREFIX = "ha-hdfs:";
104
105
106 /**
107 * Please see {@link LayoutVersion} on adding new layout version.
108 */
109 public static final int LAYOUT_VERSION = LayoutVersion
110 .getCurrentLayoutVersion();
111
112 /**
113 * A special path component contained in the path for a snapshot file/dir
114 */
115 public static final String DOT_SNAPSHOT_DIR = ".snapshot";
116
117 public static final byte[] DOT_SNAPSHOT_DIR_BYTES
118 = DFSUtil.string2Bytes(DOT_SNAPSHOT_DIR);
119
120 public static final String SEPARATOR_DOT_SNAPSHOT_DIR
121 = Path.SEPARATOR + DOT_SNAPSHOT_DIR;
122 }