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 */ 018package org.apache.hadoop.hdfs.client; 019 020import org.apache.hadoop.classification.InterfaceAudience; 021import org.apache.hadoop.hdfs.protocol.HdfsConstants; 022 023import java.util.concurrent.TimeUnit; 024 025/** Client configuration properties */ 026@InterfaceAudience.Private 027public interface HdfsClientConfigKeys { 028 long SECOND = 1000L; 029 long MINUTE = 60 * SECOND; 030 031 String DFS_BLOCK_SIZE_KEY = "dfs.blocksize"; 032 long DFS_BLOCK_SIZE_DEFAULT = 128*1024*1024; 033 String DFS_REPLICATION_KEY = "dfs.replication"; 034 short DFS_REPLICATION_DEFAULT = 3; 035 String DFS_WEBHDFS_USER_PATTERN_KEY = 036 "dfs.webhdfs.user.provider.user.pattern"; 037 String DFS_WEBHDFS_USER_PATTERN_DEFAULT = "^[A-Za-z_][A-Za-z0-9._-]*[$]?$"; 038 String DFS_WEBHDFS_ACL_PERMISSION_PATTERN_DEFAULT = 039 "^(default:)?(user|group|mask|other):[[A-Za-z_][A-Za-z0-9._-]]*:([rwx-]{3})?(,(default:)?(user|group|mask|other):[[A-Za-z_][A-Za-z0-9._-]]*:([rwx-]{3})?)*$"; 040 041 String DFS_WEBHDFS_SOCKET_CONNECT_TIMEOUT_KEY = 042 "dfs.webhdfs.socket.connect-timeout"; 043 String DFS_WEBHDFS_SOCKET_READ_TIMEOUT_KEY = 044 "dfs.webhdfs.socket.read-timeout"; 045 046 String DFS_WEBHDFS_OAUTH_ENABLED_KEY = "dfs.webhdfs.oauth2.enabled"; 047 boolean DFS_WEBHDFS_OAUTH_ENABLED_DEFAULT = false; 048 049 String DFS_WEBHDFS_REST_CSRF_ENABLED_KEY = "dfs.webhdfs.rest-csrf.enabled"; 050 boolean DFS_WEBHDFS_REST_CSRF_ENABLED_DEFAULT = false; 051 String DFS_WEBHDFS_REST_CSRF_CUSTOM_HEADER_KEY = 052 "dfs.webhdfs.rest-csrf.custom-header"; 053 String DFS_WEBHDFS_REST_CSRF_CUSTOM_HEADER_DEFAULT = "X-XSRF-HEADER"; 054 String DFS_WEBHDFS_REST_CSRF_METHODS_TO_IGNORE_KEY = 055 "dfs.webhdfs.rest-csrf.methods-to-ignore"; 056 String DFS_WEBHDFS_REST_CSRF_METHODS_TO_IGNORE_DEFAULT = 057 "GET,OPTIONS,HEAD,TRACE"; 058 String DFS_WEBHDFS_REST_CSRF_BROWSER_USERAGENTS_REGEX_KEY = 059 "dfs.webhdfs.rest-csrf.browser-useragents-regex"; 060 061 String OAUTH_CLIENT_ID_KEY = "dfs.webhdfs.oauth2.client.id"; 062 String OAUTH_REFRESH_URL_KEY = "dfs.webhdfs.oauth2.refresh.url"; 063 064 String ACCESS_TOKEN_PROVIDER_KEY = "dfs.webhdfs.oauth2.access.token.provider"; 065 066 String PREFIX = "dfs.client."; 067 String DFS_NAMESERVICES = "dfs.nameservices"; 068 int DFS_NAMENODE_HTTP_PORT_DEFAULT = 50070; 069 String DFS_NAMENODE_HTTP_ADDRESS_KEY = "dfs.namenode.http-address"; 070 int DFS_NAMENODE_HTTPS_PORT_DEFAULT = 50470; 071 String DFS_NAMENODE_HTTPS_ADDRESS_KEY = "dfs.namenode.https-address"; 072 String DFS_HA_NAMENODES_KEY_PREFIX = "dfs.ha.namenodes"; 073 String DFS_WEBHDFS_ENABLED_KEY = "dfs.webhdfs.enabled"; 074 boolean DFS_WEBHDFS_ENABLED_DEFAULT = true; 075 String DFS_NAMENODE_HTTP_PORT_KEY = "dfs.http.port"; 076 String DFS_NAMENODE_HTTPS_PORT_KEY = "dfs.https.port"; 077 int DFS_NAMENODE_RPC_PORT_DEFAULT = 8020; 078 String DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY = 079 "dfs.namenode.kerberos.principal"; 080 String DFS_CLIENT_WRITE_PACKET_SIZE_KEY = "dfs.client-write-packet-size"; 081 int DFS_CLIENT_WRITE_PACKET_SIZE_DEFAULT = 64*1024; 082 String DFS_CLIENT_SOCKET_TIMEOUT_KEY = "dfs.client.socket-timeout"; 083 String DFS_CLIENT_SOCKET_SEND_BUFFER_SIZE_KEY = 084 "dfs.client.socket.send.buffer.size"; 085 int DFS_CLIENT_SOCKET_SEND_BUFFER_SIZE_DEFAULT = 086 HdfsConstants.DEFAULT_DATA_SOCKET_SIZE; 087 String DFS_CLIENT_SOCKET_CACHE_CAPACITY_KEY = 088 "dfs.client.socketcache.capacity"; 089 int DFS_CLIENT_SOCKET_CACHE_CAPACITY_DEFAULT = 16; 090 String DFS_CLIENT_SOCKET_CACHE_EXPIRY_MSEC_KEY = 091 "dfs.client.socketcache.expiryMsec"; 092 long DFS_CLIENT_SOCKET_CACHE_EXPIRY_MSEC_DEFAULT = 3000; 093 String DFS_CLIENT_USE_DN_HOSTNAME = "dfs.client.use.datanode.hostname"; 094 boolean DFS_CLIENT_USE_DN_HOSTNAME_DEFAULT = false; 095 String DFS_CLIENT_CACHE_DROP_BEHIND_WRITES = 096 "dfs.client.cache.drop.behind.writes"; 097 String DFS_CLIENT_CACHE_DROP_BEHIND_READS = 098 "dfs.client.cache.drop.behind.reads"; 099 String DFS_CLIENT_CACHE_READAHEAD = "dfs.client.cache.readahead"; 100 String DFS_CLIENT_CACHED_CONN_RETRY_KEY = "dfs.client.cached.conn.retry"; 101 int DFS_CLIENT_CACHED_CONN_RETRY_DEFAULT = 3; 102 String DFS_CLIENT_CONTEXT = "dfs.client.context"; 103 String DFS_CLIENT_CONTEXT_DEFAULT = "default"; 104 String DFS_CLIENT_FILE_BLOCK_STORAGE_LOCATIONS_NUM_THREADS = 105 "dfs.client.file-block-storage-locations.num-threads"; 106 int DFS_CLIENT_FILE_BLOCK_STORAGE_LOCATIONS_NUM_THREADS_DEFAULT = 10; 107 String DFS_CLIENT_FILE_BLOCK_STORAGE_LOCATIONS_TIMEOUT_MS = 108 "dfs.client.file-block-storage-locations.timeout.millis"; 109 int DFS_CLIENT_FILE_BLOCK_STORAGE_LOCATIONS_TIMEOUT_MS_DEFAULT = 1000; 110 String DFS_CLIENT_USE_LEGACY_BLOCKREADER = 111 "dfs.client.use.legacy.blockreader"; 112 boolean DFS_CLIENT_USE_LEGACY_BLOCKREADER_DEFAULT = false; 113 String DFS_CLIENT_USE_LEGACY_BLOCKREADERLOCAL = 114 "dfs.client.use.legacy.blockreader.local"; 115 boolean DFS_CLIENT_USE_LEGACY_BLOCKREADERLOCAL_DEFAULT = false; 116 String DFS_CLIENT_DATANODE_RESTART_TIMEOUT_KEY = 117 "dfs.client.datanode-restart.timeout"; 118 long DFS_CLIENT_DATANODE_RESTART_TIMEOUT_DEFAULT = 30; 119 // Much code in hdfs is not yet updated to use these keys. 120 // the initial delay (unit is ms) for locateFollowingBlock, the delay time 121 // will increase exponentially(double) for each retry. 122 String DFS_CLIENT_MAX_BLOCK_ACQUIRE_FAILURES_KEY = 123 "dfs.client.max.block.acquire.failures"; 124 int DFS_CLIENT_MAX_BLOCK_ACQUIRE_FAILURES_DEFAULT = 3; 125 String DFS_CHECKSUM_TYPE_KEY = "dfs.checksum.type"; 126 String DFS_CHECKSUM_TYPE_DEFAULT = "CRC32C"; 127 String DFS_BYTES_PER_CHECKSUM_KEY = "dfs.bytes-per-checksum"; 128 int DFS_BYTES_PER_CHECKSUM_DEFAULT = 512; 129 String DFS_DATANODE_SOCKET_WRITE_TIMEOUT_KEY = 130 "dfs.datanode.socket.write.timeout"; 131 String DFS_CLIENT_DOMAIN_SOCKET_DATA_TRAFFIC = 132 "dfs.client.domain.socket.data.traffic"; 133 boolean DFS_CLIENT_DOMAIN_SOCKET_DATA_TRAFFIC_DEFAULT = false; 134 String DFS_DOMAIN_SOCKET_PATH_KEY = "dfs.domain.socket.path"; 135 String DFS_DOMAIN_SOCKET_PATH_DEFAULT = ""; 136 String DFS_SHORT_CIRCUIT_SHARED_MEMORY_WATCHER_INTERRUPT_CHECK_MS = 137 "dfs.short.circuit.shared.memory.watcher.interrupt.check.ms"; 138 int DFS_SHORT_CIRCUIT_SHARED_MEMORY_WATCHER_INTERRUPT_CHECK_MS_DEFAULT = 139 60000; 140 String DFS_CLIENT_SLOW_IO_WARNING_THRESHOLD_KEY = 141 "dfs.client.slow.io.warning.threshold.ms"; 142 long DFS_CLIENT_SLOW_IO_WARNING_THRESHOLD_DEFAULT = 30000; 143 String DFS_CLIENT_KEY_PROVIDER_CACHE_EXPIRY_MS = 144 "dfs.client.key.provider.cache.expiry"; 145 long DFS_CLIENT_KEY_PROVIDER_CACHE_EXPIRY_DEFAULT = 146 TimeUnit.DAYS.toMillis(10); // 10 days 147 String DFS_HDFS_BLOCKS_METADATA_ENABLED = 148 "dfs.datanode.hdfs-blocks-metadata.enabled"; 149 boolean DFS_HDFS_BLOCKS_METADATA_ENABLED_DEFAULT = false; 150 151 String DFS_DATANODE_KERBEROS_PRINCIPAL_KEY = 152 "dfs.datanode.kerberos.principal"; 153 String DFS_DATANODE_READAHEAD_BYTES_KEY = "dfs.datanode.readahead.bytes"; 154 long DFS_DATANODE_READAHEAD_BYTES_DEFAULT = 4 * 1024 * 1024; // 4MB 155 156 String DFS_ENCRYPT_DATA_TRANSFER_CIPHER_SUITES_KEY = 157 "dfs.encrypt.data.transfer.cipher.suites"; 158 159 String DFS_DATA_TRANSFER_PROTECTION_KEY = "dfs.data.transfer.protection"; 160 String DFS_DATA_TRANSFER_PROTECTION_DEFAULT = ""; 161 String DFS_DATA_TRANSFER_SASL_PROPS_RESOLVER_CLASS_KEY = 162 "dfs.data.transfer.saslproperties.resolver.class"; 163 164 String DFS_ENCRYPT_DATA_TRANSFER_CIPHER_KEY_BITLENGTH_KEY = 165 "dfs.encrypt.data.transfer.cipher.key.bitlength"; 166 int DFS_ENCRYPT_DATA_TRANSFER_CIPHER_KEY_BITLENGTH_DEFAULT = 128; 167 168 String DFS_TRUSTEDCHANNEL_RESOLVER_CLASS = 169 "dfs.trustedchannel.resolver.class"; 170 171 String REPLICA_ACCESSOR_BUILDER_CLASSES_KEY = 172 PREFIX + "replica.accessor.builder.classes"; 173 174 // The number of NN response dropped by client proactively in each RPC call. 175 // For testing NN retry cache, we can set this property with positive value. 176 String DFS_CLIENT_TEST_DROP_NAMENODE_RESPONSE_NUM_KEY = 177 "dfs.client.test.drop.namenode.response.number"; 178 int DFS_CLIENT_TEST_DROP_NAMENODE_RESPONSE_NUM_DEFAULT = 0; 179 String DFS_CLIENT_LOCAL_INTERFACES = "dfs.client.local.interfaces"; 180 String DFS_USER_HOME_DIR_PREFIX_KEY = "dfs.user.home.dir.prefix"; 181 String DFS_USER_HOME_DIR_PREFIX_DEFAULT = "/user"; 182 183 String DFS_DATA_TRANSFER_CLIENT_TCPNODELAY_KEY = 184 "dfs.data.transfer.client.tcpnodelay"; 185 boolean DFS_DATA_TRANSFER_CLIENT_TCPNODELAY_DEFAULT = true; 186 187 /** 188 * These are deprecated config keys to client code. 189 */ 190 interface DeprecatedKeys { 191 String DFS_NAMENODE_BACKUP_ADDRESS_KEY = 192 "dfs.namenode.backup.address"; 193 String DFS_NAMENODE_BACKUP_HTTP_ADDRESS_KEY = 194 "dfs.namenode.backup.http-address"; 195 String DFS_DATANODE_BALANCE_BANDWIDTHPERSEC_KEY = 196 "dfs.datanode.balance.bandwidthPerSec"; 197 //Following keys have no defaults 198 String DFS_DATANODE_DATA_DIR_KEY = "dfs.datanode.data.dir"; 199 String DFS_NAMENODE_MAX_OBJECTS_KEY = "dfs.namenode.max.objects"; 200 String DFS_NAMENODE_NAME_DIR_KEY = "dfs.namenode.name.dir"; 201 String DFS_NAMENODE_NAME_DIR_RESTORE_KEY = "dfs.namenode.name.dir.restore"; 202 String DFS_NAMENODE_EDITS_DIR_KEY = "dfs.namenode.edits.dir"; 203 String DFS_NAMENODE_SAFEMODE_EXTENSION_KEY = 204 "dfs.namenode.safemode.extension"; 205 String DFS_NAMENODE_SAFEMODE_THRESHOLD_PCT_KEY = 206 "dfs.namenode.safemode.threshold-pct"; 207 String DFS_NAMENODE_SECONDARY_HTTP_ADDRESS_KEY = 208 "dfs.namenode.secondary.http-address"; 209 String DFS_NAMENODE_CHECKPOINT_DIR_KEY = "dfs.namenode.checkpoint.dir"; 210 String DFS_NAMENODE_CHECKPOINT_EDITS_DIR_KEY = 211 "dfs.namenode.checkpoint.edits.dir"; 212 String DFS_NAMENODE_CHECKPOINT_PERIOD_KEY = 213 "dfs.namenode.checkpoint.period"; 214 String DFS_NAMENODE_HEARTBEAT_RECHECK_INTERVAL_KEY = 215 "dfs.namenode.heartbeat.recheck-interval"; 216 String DFS_CLIENT_HTTPS_KEYSTORE_RESOURCE_KEY = 217 "dfs.client.https.keystore.resource"; 218 String DFS_CLIENT_HTTPS_NEED_AUTH_KEY = "dfs.client.https.need-auth"; 219 String DFS_DATANODE_HOST_NAME_KEY = "dfs.datanode.hostname"; 220 String DFS_METRICS_SESSION_ID_KEY = "dfs.metrics.session-id"; 221 String DFS_NAMENODE_ACCESSTIME_PRECISION_KEY = 222 "dfs.namenode.accesstime.precision"; 223 String DFS_NAMENODE_REPLICATION_CONSIDERLOAD_KEY = 224 "dfs.namenode.replication.considerLoad"; 225 String DFS_NAMENODE_REPLICATION_INTERVAL_KEY = 226 "dfs.namenode.replication.interval"; 227 String DFS_NAMENODE_REPLICATION_MIN_KEY = "dfs.namenode.replication.min"; 228 String DFS_NAMENODE_REPLICATION_PENDING_TIMEOUT_SEC_KEY = 229 "dfs.namenode.replication.pending.timeout-sec"; 230 String DFS_NAMENODE_REPLICATION_MAX_STREAMS_KEY = 231 "dfs.namenode.replication.max-streams"; 232 String DFS_PERMISSIONS_ENABLED_KEY = "dfs.permissions.enabled"; 233 String DFS_PERMISSIONS_SUPERUSERGROUP_KEY = 234 "dfs.permissions.superusergroup"; 235 String DFS_DATANODE_MAX_RECEIVER_THREADS_KEY = 236 "dfs.datanode.max.transfer.threads"; 237 String DFS_NAMESERVICE_ID = "dfs.nameservice.id"; 238 } 239 240 /** dfs.client.retry configuration properties */ 241 interface Retry { 242 String PREFIX = HdfsClientConfigKeys.PREFIX + "retry."; 243 244 String POLICY_ENABLED_KEY = PREFIX + "policy.enabled"; 245 boolean POLICY_ENABLED_DEFAULT = false; 246 String POLICY_SPEC_KEY = PREFIX + "policy.spec"; 247 String POLICY_SPEC_DEFAULT = "10000,6,60000,10"; //t1,n1,t2,n2,... 248 249 String TIMES_GET_LAST_BLOCK_LENGTH_KEY = 250 PREFIX + "times.get-last-block-length"; 251 int TIMES_GET_LAST_BLOCK_LENGTH_DEFAULT = 3; 252 String INTERVAL_GET_LAST_BLOCK_LENGTH_KEY = 253 PREFIX + "interval-ms.get-last-block-length"; 254 int INTERVAL_GET_LAST_BLOCK_LENGTH_DEFAULT = 4000; 255 256 String MAX_ATTEMPTS_KEY = PREFIX + "max.attempts"; 257 int MAX_ATTEMPTS_DEFAULT = 10; 258 259 String WINDOW_BASE_KEY = PREFIX + "window.base"; 260 int WINDOW_BASE_DEFAULT = 3000; 261 } 262 263 /** dfs.client.failover configuration properties */ 264 interface Failover { 265 String PREFIX = HdfsClientConfigKeys.PREFIX + "failover."; 266 267 String PROXY_PROVIDER_KEY_PREFIX = PREFIX + "proxy.provider"; 268 String MAX_ATTEMPTS_KEY = PREFIX + "max.attempts"; 269 int MAX_ATTEMPTS_DEFAULT = 15; 270 String SLEEPTIME_BASE_KEY = PREFIX + "sleep.base.millis"; 271 int SLEEPTIME_BASE_DEFAULT = 500; 272 String SLEEPTIME_MAX_KEY = PREFIX + "sleep.max.millis"; 273 int SLEEPTIME_MAX_DEFAULT = 15000; 274 String CONNECTION_RETRIES_KEY = PREFIX + "connection.retries"; 275 int CONNECTION_RETRIES_DEFAULT = 0; 276 String CONNECTION_RETRIES_ON_SOCKET_TIMEOUTS_KEY = 277 PREFIX + "connection.retries.on.timeouts"; 278 int CONNECTION_RETRIES_ON_SOCKET_TIMEOUTS_DEFAULT = 0; 279 } 280 281 /** dfs.client.write configuration properties */ 282 interface Write { 283 String PREFIX = HdfsClientConfigKeys.PREFIX + "write."; 284 285 String MAX_PACKETS_IN_FLIGHT_KEY = PREFIX + "max-packets-in-flight"; 286 int MAX_PACKETS_IN_FLIGHT_DEFAULT = 80; 287 String EXCLUDE_NODES_CACHE_EXPIRY_INTERVAL_KEY = 288 PREFIX + "exclude.nodes.cache.expiry.interval.millis"; 289 long EXCLUDE_NODES_CACHE_EXPIRY_INTERVAL_DEFAULT = 10*MINUTE; 290 291 interface ByteArrayManager { 292 String PREFIX = Write.PREFIX + "byte-array-manager."; 293 294 String ENABLED_KEY = PREFIX + "enabled"; 295 boolean ENABLED_DEFAULT = false; 296 String COUNT_THRESHOLD_KEY = PREFIX + "count-threshold"; 297 int COUNT_THRESHOLD_DEFAULT = 128; 298 String COUNT_LIMIT_KEY = PREFIX + "count-limit"; 299 int COUNT_LIMIT_DEFAULT = 2048; 300 String COUNT_RESET_TIME_PERIOD_MS_KEY = 301 PREFIX + "count-reset-time-period-ms"; 302 long COUNT_RESET_TIME_PERIOD_MS_DEFAULT = 10*SECOND; 303 } 304 } 305 306 /** dfs.client.block.write configuration properties */ 307 interface BlockWrite { 308 String PREFIX = HdfsClientConfigKeys.PREFIX + "block.write."; 309 310 String RETRIES_KEY = PREFIX + "retries"; 311 int RETRIES_DEFAULT = 3; 312 String LOCATEFOLLOWINGBLOCK_RETRIES_KEY = 313 PREFIX + "locateFollowingBlock.retries"; 314 int LOCATEFOLLOWINGBLOCK_RETRIES_DEFAULT = 5; 315 String LOCATEFOLLOWINGBLOCK_INITIAL_DELAY_MS_KEY = 316 PREFIX + "locateFollowingBlock.initial.delay.ms"; 317 int LOCATEFOLLOWINGBLOCK_INITIAL_DELAY_MS_DEFAULT = 400; 318 319 interface ReplaceDatanodeOnFailure { 320 String PREFIX = BlockWrite.PREFIX + "replace-datanode-on-failure."; 321 322 String ENABLE_KEY = PREFIX + "enable"; 323 boolean ENABLE_DEFAULT = true; 324 String POLICY_KEY = PREFIX + "policy"; 325 String POLICY_DEFAULT = "DEFAULT"; 326 String BEST_EFFORT_KEY = PREFIX + "best-effort"; 327 boolean BEST_EFFORT_DEFAULT = false; 328 } 329 } 330 331 /** dfs.client.read configuration properties */ 332 interface Read { 333 String PREFIX = HdfsClientConfigKeys.PREFIX + "read."; 334 335 String PREFETCH_SIZE_KEY = PREFIX + "prefetch.size"; 336 337 interface ShortCircuit { 338 String PREFIX = Read.PREFIX + "shortcircuit."; 339 340 String KEY = PREFIX.substring(0, PREFIX.length()-1); 341 boolean DEFAULT = false; 342 String SKIP_CHECKSUM_KEY = PREFIX + "skip.checksum"; 343 boolean SKIP_CHECKSUM_DEFAULT = false; 344 String BUFFER_SIZE_KEY = PREFIX + "buffer.size"; 345 int BUFFER_SIZE_DEFAULT = 1024 * 1024; 346 347 String STREAMS_CACHE_SIZE_KEY = PREFIX + "streams.cache.size"; 348 int STREAMS_CACHE_SIZE_DEFAULT = 256; 349 String STREAMS_CACHE_EXPIRY_MS_KEY = PREFIX + "streams.cache.expiry.ms"; 350 long STREAMS_CACHE_EXPIRY_MS_DEFAULT = 5*MINUTE; 351 } 352 } 353 354 /** dfs.client.short.circuit configuration properties */ 355 interface ShortCircuit { 356 String PREFIX = Read.PREFIX + "short.circuit."; 357 358 String REPLICA_STALE_THRESHOLD_MS_KEY = 359 PREFIX + "replica.stale.threshold.ms"; 360 long REPLICA_STALE_THRESHOLD_MS_DEFAULT = 30*MINUTE; 361 } 362 363 /** dfs.client.mmap configuration properties */ 364 interface Mmap { 365 String PREFIX = HdfsClientConfigKeys.PREFIX + "mmap."; 366 367 String ENABLED_KEY = PREFIX + "enabled"; 368 boolean ENABLED_DEFAULT = true; 369 String CACHE_SIZE_KEY = PREFIX + "cache.size"; 370 int CACHE_SIZE_DEFAULT = 256; 371 String CACHE_TIMEOUT_MS_KEY = PREFIX + "cache.timeout.ms"; 372 long CACHE_TIMEOUT_MS_DEFAULT = 60*MINUTE; 373 String RETRY_TIMEOUT_MS_KEY = PREFIX + "retry.timeout.ms"; 374 long RETRY_TIMEOUT_MS_DEFAULT = 5*MINUTE; 375 } 376 377 /** dfs.client.hedged.read configuration properties */ 378 interface HedgedRead { 379 String PREFIX = HdfsClientConfigKeys.PREFIX + "hedged.read."; 380 381 String THRESHOLD_MILLIS_KEY = PREFIX + "threshold.millis"; 382 long THRESHOLD_MILLIS_DEFAULT = 500; 383 String THREADPOOL_SIZE_KEY = PREFIX + "threadpool.size"; 384 int THREADPOOL_SIZE_DEFAULT = 0; 385 } 386 387 /** dfs.http.client configuration properties */ 388 interface HttpClient { 389 String PREFIX = "dfs.http.client."; 390 391 // retry 392 String RETRY_POLICY_ENABLED_KEY = PREFIX + "retry.policy.enabled"; 393 boolean RETRY_POLICY_ENABLED_DEFAULT = false; 394 String RETRY_POLICY_SPEC_KEY = PREFIX + "retry.policy.spec"; 395 String RETRY_POLICY_SPEC_DEFAULT = "10000,6,60000,10"; //t1,n1,t2,n2,... 396 String RETRY_MAX_ATTEMPTS_KEY = PREFIX + "retry.max.attempts"; 397 int RETRY_MAX_ATTEMPTS_DEFAULT = 10; 398 399 // failover 400 String FAILOVER_MAX_ATTEMPTS_KEY = PREFIX + "failover.max.attempts"; 401 int FAILOVER_MAX_ATTEMPTS_DEFAULT = 15; 402 String FAILOVER_SLEEPTIME_BASE_KEY = PREFIX + "failover.sleep.base.millis"; 403 int FAILOVER_SLEEPTIME_BASE_DEFAULT = 500; 404 String FAILOVER_SLEEPTIME_MAX_KEY = PREFIX + "failover.sleep.max.millis"; 405 int FAILOVER_SLEEPTIME_MAX_DEFAULT = 15000; 406 } 407}