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 }