hadoop.hdfs.configuration.version1version of this configuration filedfs.namenode.rpc-address
RPC address that handles all clients requests. In the case of HA/Federation where multiple namenodes exist,
the name service id is added to the name e.g. dfs.namenode.rpc-address.ns1
dfs.namenode.rpc-address.EXAMPLENAMESERVICE
The value of this property will take the form of nn-host1:rpc-port.
dfs.namenode.rpc-bind-host
The actual address the RPC server will bind to. If this optional address is
set, it overrides only the hostname portion of dfs.namenode.rpc-address.
It can also be specified per name node or name service for HA/Federation.
This is useful for making the name node listen on all interfaces by
setting it to 0.0.0.0.
dfs.namenode.servicerpc-address
RPC address for HDFS Services communication. BackupNode, Datanodes and all other services should be
connecting to this address if it is configured. In the case of HA/Federation where multiple namenodes exist,
the name service id is added to the name e.g. dfs.namenode.servicerpc-address.ns1
dfs.namenode.rpc-address.EXAMPLENAMESERVICE
The value of this property will take the form of nn-host1:rpc-port.
If the value of this property is unset the value of dfs.namenode.rpc-address will be used as the default.
dfs.namenode.servicerpc-bind-host
The actual address the service RPC server will bind to. If this optional address is
set, it overrides only the hostname portion of dfs.namenode.servicerpc-address.
It can also be specified per name node or name service for HA/Federation.
This is useful for making the name node listen on all interfaces by
setting it to 0.0.0.0.
dfs.namenode.secondary.http-address0.0.0.0:50090
The secondary namenode http server address and port.
dfs.namenode.secondary.https-address0.0.0.0:50091
The secondary namenode HTTPS server address and port.
dfs.datanode.address0.0.0.0:50010
The datanode server address and port for data transfer.
dfs.datanode.http.address0.0.0.0:50075
The datanode http server address and port.
dfs.datanode.ipc.address0.0.0.0:50020
The datanode ipc server address and port.
dfs.datanode.handler.count10The number of server threads for the datanode.dfs.namenode.http-address0.0.0.0:50070
The address and the base port where the dfs namenode web ui will listen on.
dfs.namenode.http-bind-host
The actual adress the HTTP server will bind to. If this optional address
is set, it overrides only the hostname portion of dfs.namenode.http-address.
It can also be specified per name node or name service for HA/Federation.
This is useful for making the name node HTTP server listen on all
interfaces by setting it to 0.0.0.0.
dfs.namenode.heartbeat.recheck-interval300000
This time decides the interval to check for expired datanodes.
With this value and dfs.heartbeat.interval, the interval of
deciding the datanode is stale or not is also calculated.
The unit of this configuration is millisecond.
dfs.http.policyHTTP_ONLYDecide if HTTPS(SSL) is supported on HDFS
This configures the HTTP endpoint for HDFS daemons:
The following values are supported:
- HTTP_ONLY : Service is provided only on http
- HTTPS_ONLY : Service is provided only on https
- HTTP_AND_HTTPS : Service is provided both on http and https
dfs.client.https.need-authfalseWhether SSL client certificate authentication is required
dfs.client.cached.conn.retry3The number of times the HDFS client will pull a socket from the
cache. Once this number is exceeded, the client will try to create a new
socket.
dfs.https.server.keystore.resourcessl-server.xmlResource file from which ssl server keystore
information will be extracted
dfs.client.https.keystore.resourcessl-client.xmlResource file from which ssl client keystore
information will be extracted
dfs.datanode.https.address0.0.0.0:50475The datanode secure http server address and port.dfs.namenode.https-address0.0.0.0:50470The namenode secure http server address and port.dfs.namenode.https-bind-host
The actual adress the HTTPS server will bind to. If this optional address
is set, it overrides only the hostname portion of dfs.namenode.https-address.
It can also be specified per name node or name service for HA/Federation.
This is useful for making the name node HTTPS server listen on all
interfaces by setting it to 0.0.0.0.
dfs.datanode.dns.interfacedefaultThe name of the Network Interface from which a data node should
report its IP address.
dfs.datanode.dns.nameserverdefaultThe host name or IP address of the name server (DNS)
which a DataNode should use to determine the host name used by the
NameNode for communication and display purposes.
dfs.namenode.backup.address0.0.0.0:50100
The backup node server address and port.
If the port is 0 then the server will start on a free port.
dfs.namenode.backup.http-address0.0.0.0:50105
The backup node http server address and port.
If the port is 0 then the server will start on a free port.
dfs.namenode.replication.considerLoadtrueDecide if chooseTarget considers the target's load or not
dfs.default.chunk.view.size32768The number of bytes to view for a file on the browser.
dfs.datanode.du.reserved0Reserved space in bytes per volume. Always leave this much space free for non dfs use.
dfs.namenode.name.dirfile://${hadoop.tmp.dir}/dfs/nameDetermines where on the local filesystem the DFS name node
should store the name table(fsimage). If this is a comma-delimited list
of directories then the name table is replicated in all of the
directories, for redundancy. dfs.namenode.name.dir.restorefalseSet to true to enable NameNode to attempt recovering a
previously failed dfs.namenode.name.dir. When enabled, a recovery of any
failed directory is attempted during checkpoint.dfs.namenode.fs-limits.max-component-length255Defines the maximum number of bytes in UTF-8 encoding in each
component of a path. A value of 0 will disable the check.dfs.namenode.fs-limits.max-directory-items1048576Defines the maximum number of items that a directory may
contain. Cannot set the property to a value less than 1 or more than
6400000.dfs.namenode.fs-limits.min-block-size1048576Minimum block size in bytes, enforced by the Namenode at create
time. This prevents the accidental creation of files with tiny block
sizes (and thus many blocks), which can degrade
performance.dfs.namenode.fs-limits.max-blocks-per-file1048576Maximum number of blocks per file, enforced by the Namenode on
write. This prevents the creation of extremely large files which can
degrade performance.dfs.namenode.edits.dir${dfs.namenode.name.dir}Determines where on the local filesystem the DFS name node
should store the transaction (edits) file. If this is a comma-delimited list
of directories then the transaction file is replicated in all of the
directories, for redundancy. Default value is same as dfs.namenode.name.dir
dfs.namenode.shared.edits.dirA directory on shared storage between the multiple namenodes
in an HA cluster. This directory will be written by the active and read
by the standby in order to keep the namespaces synchronized. This directory
does not need to be listed in dfs.namenode.edits.dir above. It should be
left empty in a non-HA cluster.
dfs.namenode.edits.journal-plugin.qjournalorg.apache.hadoop.hdfs.qjournal.client.QuorumJournalManagerdfs.permissions.enabledtrue
If "true", enable permission checking in HDFS.
If "false", permission checking is turned off,
but all other behavior is unchanged.
Switching from one parameter value to the other does not change the mode,
owner or group of files or directories.
dfs.permissions.superusergroupsupergroupThe name of the group of super-users.dfs.namenode.acls.enabledfalse
Set to true to enable support for HDFS ACLs (Access Control Lists). By
default, ACLs are disabled. When ACLs are disabled, the NameNode rejects
all RPCs related to setting or getting ACLs.
dfs.namenode.lazypersist.file.scrub.interval.sec300
The NameNode periodically scans the namespace for LazyPersist files with
missing blocks and unlinks them from the namespace. This configuration key
controls the interval between successive scans. Set it to a negative value
to disable this behavior.
dfs.block.access.token.enablefalse
If "true", access tokens are used as capabilities for accessing datanodes.
If "false", no access tokens are checked on accessing datanodes.
dfs.block.access.key.update.interval600
Interval in minutes at which namenode updates its access keys.
dfs.block.access.token.lifetime600The lifetime of access tokens in minutes.dfs.datanode.data.dirfile://${hadoop.tmp.dir}/dfs/dataDetermines where on the local filesystem an DFS data node
should store its blocks. If this is a comma-delimited
list of directories, then data will be stored in all named
directories, typically on different devices. The directories should be tagged
with corresponding storage types ([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK]) for HDFS
storage policies. The default storage type will be DISK if the directory does
not have a storage type tagged explicitly. Directories that do not exist will
be created if local filesystem permission allows.
dfs.datanode.data.dir.perm700Permissions for the directories on on the local filesystem where
the DFS data node store its blocks. The permissions can either be octal or
symbolic.dfs.replication3Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
dfs.replication.max512Maximal block replication.
dfs.namenode.replication.min1Minimal block replication.
dfs.blocksize134217728
The default block size for new files, in bytes.
You can use the following suffix (case insensitive):
k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa) to specify the size (such as 128k, 512m, 1g, etc.),
Or provide complete size in bytes (such as 134217728 for 128 MB).
dfs.client.block.write.retries3The number of retries for writing blocks to the data nodes,
before we signal failure to the application.
dfs.client.block.write.replace-datanode-on-failure.enabletrue
If there is a datanode/network failure in the write pipeline,
DFSClient will try to remove the failed datanode from the pipeline
and then continue writing with the remaining datanodes. As a result,
the number of datanodes in the pipeline is decreased. The feature is
to add new datanodes to the pipeline.
This is a site-wide property to enable/disable the feature.
When the cluster size is extremely small, e.g. 3 nodes or less, cluster
administrators may want to set the policy to NEVER in the default
configuration file or disable this feature. Otherwise, users may
experience an unusually high rate of pipeline failures since it is
impossible to find new datanodes for replacement.
See also dfs.client.block.write.replace-datanode-on-failure.policy
dfs.client.block.write.replace-datanode-on-failure.policyDEFAULT
This property is used only if the value of
dfs.client.block.write.replace-datanode-on-failure.enable is true.
ALWAYS: always add a new datanode when an existing datanode is removed.
NEVER: never add a new datanode.
DEFAULT:
Let r be the replication number.
Let n be the number of existing datanodes.
Add a new datanode only if r is greater than or equal to 3 and either
(1) floor(r/2) is greater than or equal to n; or
(2) r is greater than n and the block is hflushed/appended.
dfs.client.block.write.replace-datanode-on-failure.best-effortfalse
This property is used only if the value of
dfs.client.block.write.replace-datanode-on-failure.enable is true.
Best effort means that the client will try to replace a failed datanode
in write pipeline (provided that the policy is satisfied), however, it
continues the write operation in case that the datanode replacement also
fails.
Suppose the datanode replacement fails.
false: An exception should be thrown so that the write will fail.
true : The write should be resumed with the remaining datandoes.
Note that setting this property to true allows writing to a pipeline
with a smaller number of datanodes. As a result, it increases the
probability of data loss.
dfs.blockreport.intervalMsec21600000Determines block reporting interval in milliseconds.dfs.blockreport.initialDelay0Delay for first block report in seconds.dfs.blockreport.split.threshold1000000If the number of blocks on the DataNode is below this
threshold then it will send block reports for all Storage Directories
in a single message.
If the number of blocks exceeds this threshold then the DataNode will
send block reports for each Storage Directory in separate messages.
Set to zero to always split.
dfs.datanode.directoryscan.interval21600Interval in seconds for Datanode to scan data directories and
reconcile the difference between blocks in memory and on the disk.
dfs.datanode.directoryscan.threads1How many threads should the threadpool used to compile reports
for volumes in parallel have.
dfs.heartbeat.interval3Determines datanode heartbeat interval in seconds.dfs.namenode.handler.count10The number of server threads for the namenode.dfs.namenode.safemode.threshold-pct0.999f
Specifies the percentage of blocks that should satisfy
the minimal replication requirement defined by dfs.namenode.replication.min.
Values less than or equal to 0 mean not to wait for any particular
percentage of blocks before exiting safemode.
Values greater than 1 will make safe mode permanent.
dfs.namenode.safemode.min.datanodes0
Specifies the number of datanodes that must be considered alive
before the name node exits safemode.
Values less than or equal to 0 mean not to take the number of live
datanodes into account when deciding whether to remain in safe mode
during startup.
Values greater than the number of datanodes in the cluster
will make safe mode permanent.
dfs.namenode.safemode.extension30000
Determines extension of safe mode in milliseconds
after the threshold level is reached.
dfs.namenode.resource.check.interval5000
The interval in milliseconds at which the NameNode resource checker runs.
The checker calculates the number of the NameNode storage volumes whose
available spaces are more than dfs.namenode.resource.du.reserved, and
enters safemode if the number becomes lower than the minimum value
specified by dfs.namenode.resource.checked.volumes.minimum.
dfs.namenode.resource.du.reserved104857600
The amount of space to reserve/require for a NameNode storage directory
in bytes. The default is 100MB.
dfs.namenode.resource.checked.volumes
A list of local directories for the NameNode resource checker to check in
addition to the local edits directories.
dfs.namenode.resource.checked.volumes.minimum1
The minimum number of redundant NameNode storage volumes required.
dfs.datanode.balance.bandwidthPerSec1048576
Specifies the maximum amount of bandwidth that each datanode
can utilize for the balancing purpose in term of
the number of bytes per second.
dfs.hostsNames a file that contains a list of hosts that are
permitted to connect to the namenode. The full pathname of the file
must be specified. If the value is empty, all hosts are
permitted.dfs.hosts.excludeNames a file that contains a list of hosts that are
not permitted to connect to the namenode. The full pathname of the
file must be specified. If the value is empty, no hosts are
excluded.dfs.namenode.max.objects0The maximum number of files, directories and blocks
dfs supports. A value of zero indicates no limit to the number
of objects that dfs supports.
dfs.namenode.datanode.registration.ip-hostname-checktrue
If true (the default), then the namenode requires that a connecting
datanode's address must be resolved to a hostname. If necessary, a reverse
DNS lookup is performed. All attempts to register a datanode from an
unresolvable address are rejected.
It is recommended that this setting be left on to prevent accidental
registration of datanodes listed by hostname in the excludes file during a
DNS outage. Only set this to false in environments where there is no
infrastructure to support reverse DNS lookup.
dfs.namenode.decommission.interval30Namenode periodicity in seconds to check if decommission is
complete.dfs.namenode.decommission.blocks.per.interval500000The approximate number of blocks to process per
decommission interval, as defined in dfs.namenode.decommission.interval.
dfs.namenode.decommission.max.concurrent.tracked.nodes100
The maximum number of decommission-in-progress datanodes nodes that will be
tracked at one time by the namenode. Tracking a decommission-in-progress
datanode consumes additional NN memory proportional to the number of blocks
on the datnode. Having a conservative limit reduces the potential impact
of decomissioning a large number of nodes at once.
A value of 0 means no limit will be enforced.
dfs.namenode.replication.interval3The periodicity in seconds with which the namenode computes
replication work for datanodes. dfs.namenode.accesstime.precision3600000The access time for HDFS file is precise upto this value.
The default value is 1 hour. Setting a value of 0 disables
access times for HDFS.
dfs.datanode.pluginsComma-separated list of datanode plug-ins to be activated.
dfs.namenode.pluginsComma-separated list of namenode plug-ins to be activated.
dfs.stream-buffer-size4096The size of buffer to stream files.
The size of this buffer should probably be a multiple of hardware
page size (4096 on Intel x86), and it determines how much data is
buffered during read and write operations.dfs.bytes-per-checksum512The number of bytes per checksum. Must not be larger than
dfs.stream-buffer-sizedfs.client-write-packet-size65536Packet size for clients to writedfs.client.write.exclude.nodes.cache.expiry.interval.millis600000The maximum period to keep a DN in the excluded nodes list
at a client. After this period, in milliseconds, the previously excluded node(s) will
be removed automatically from the cache and will be considered good for block allocations
again. Useful to lower or raise in situations where you keep a file open for very long
periods (such as a Write-Ahead-Log (WAL) file) to make the writer tolerant to cluster maintenance
restarts. Defaults to 10 minutes.dfs.namenode.checkpoint.dirfile://${hadoop.tmp.dir}/dfs/namesecondaryDetermines where on the local filesystem the DFS secondary
name node should store the temporary images to merge.
If this is a comma-delimited list of directories then the image is
replicated in all of the directories for redundancy.
dfs.namenode.checkpoint.edits.dir${dfs.namenode.checkpoint.dir}Determines where on the local filesystem the DFS secondary
name node should store the temporary edits to merge.
If this is a comma-delimited list of directories then the edits is
replicated in all of the directories for redundancy.
Default value is same as dfs.namenode.checkpoint.dir
dfs.namenode.checkpoint.period3600The number of seconds between two periodic checkpoints.
dfs.namenode.checkpoint.txns1000000The Secondary NameNode or CheckpointNode will create a checkpoint
of the namespace every 'dfs.namenode.checkpoint.txns' transactions, regardless
of whether 'dfs.namenode.checkpoint.period' has expired.
dfs.namenode.checkpoint.check.period60The SecondaryNameNode and CheckpointNode will poll the NameNode
every 'dfs.namenode.checkpoint.check.period' seconds to query the number
of uncheckpointed transactions.
dfs.namenode.checkpoint.max-retries3The SecondaryNameNode retries failed checkpointing. If the
failure occurs while loading fsimage or replaying edits, the number of
retries is limited by this variable.
dfs.namenode.num.checkpoints.retained2The number of image checkpoint files (fsimage_*) that will be retained by
the NameNode and Secondary NameNode in their storage directories. All edit
logs (stored on edits_* files) necessary to recover an up-to-date namespace from the oldest retained
checkpoint will also be retained.
dfs.namenode.num.extra.edits.retained1000000The number of extra transactions which should be retained
beyond what is minimally necessary for a NN restart.
It does not translate directly to file's age, or the number of files kept,
but to the number of transactions (here "edits" means transactions).
One edit file may contain several transactions (edits).
During checkpoint, NameNode will identify the total number of edits to retain as extra by
checking the latest checkpoint transaction value, subtracted by the value of this property.
Then, it scans edits files to identify the older ones that don't include the computed range of
retained transactions that are to be kept around, and purges them subsequently.
The retainment can be useful for audit purposes or for an HA setup where a remote Standby Node may have
been offline for some time and need to have a longer backlog of retained
edits in order to start again.
Typically each edit is on the order of a few hundred bytes, so the default
of 1 million edits should be on the order of hundreds of MBs or low GBs.
NOTE: Fewer extra edits may be retained than value specified for this setting
if doing so would mean that more segments would be retained than the number
configured by dfs.namenode.max.extra.edits.segments.retained.
dfs.namenode.max.extra.edits.segments.retained10000The maximum number of extra edit log segments which should be retained
beyond what is minimally necessary for a NN restart. When used in conjunction with
dfs.namenode.num.extra.edits.retained, this configuration property serves to cap
the number of extra edits files to a reasonable value.
dfs.namenode.delegation.key.update-interval86400000The update interval for master key for delegation tokens
in the namenode in milliseconds.
dfs.namenode.delegation.token.max-lifetime604800000The maximum lifetime in milliseconds for which a delegation
token is valid.
dfs.namenode.delegation.token.renew-interval86400000The renewal interval for delegation token in milliseconds.
dfs.datanode.failed.volumes.tolerated0The number of volumes that are allowed to
fail before a datanode stops offering service. By default
any volume failure will cause a datanode to shutdown.
dfs.image.compressfalseShould the dfs image be compressed?
dfs.image.compression.codecorg.apache.hadoop.io.compress.DefaultCodecIf the dfs image is compressed, how should they be compressed?
This has to be a codec defined in io.compression.codecs.
dfs.image.transfer.timeout60000
Socket timeout for image transfer in milliseconds. This timeout and the related
dfs.image.transfer.bandwidthPerSec parameter should be configured such
that normal image transfer can complete successfully.
This timeout prevents client hangs when the sender fails during
image transfer. This is socket timeout during image transfer.
dfs.image.transfer.bandwidthPerSec0
Maximum bandwidth used for image transfer in bytes per second.
This can help keep normal namenode operations responsive during
checkpointing. The maximum bandwidth and timeout in
dfs.image.transfer.timeout should be set such that normal image
transfers can complete successfully.
A default value of 0 indicates that throttling is disabled.
dfs.image.transfer.chunksize65536
Chunksize in bytes to upload the checkpoint.
Chunked streaming is used to avoid internal buffering of contents
of image file of huge size.
dfs.namenode.support.allow.formattrueDoes HDFS namenode allow itself to be formatted?
You may consider setting this to false for any production
cluster, to avoid any possibility of formatting a running DFS.
dfs.datanode.max.transfer.threads4096
Specifies the maximum number of threads to use for transferring data
in and out of the DN.
dfs.datanode.scan.period.hours504
If this is positive, the DataNode will not scan any
individual block more than once in the specified scan period.
If this is negative, the block scanner is disabled.
If this is set to zero, then the default value of 504 hours
or 3 weeks is used. Prior versions of HDFS incorrectly documented
that setting this key to zero will disable the block scanner.
dfs.block.scanner.volume.bytes.per.second1048576
If this is 0, the DataNode's block scanner will be disabled. If this
is positive, this is the number of bytes per second that the DataNode's
block scanner will try to scan from each volume.
dfs.datanode.readahead.bytes4194304
While reading block files, if the Hadoop native libraries are available,
the datanode can use the posix_fadvise system call to explicitly
page data into the operating system buffer cache ahead of the current
reader's position. This can improve performance especially when
disks are highly contended.
This configuration specifies the number of bytes ahead of the current
read position which the datanode will attempt to read ahead. This
feature may be disabled by configuring this property to 0.
If the native libraries are not available, this configuration has no
effect.
dfs.datanode.drop.cache.behind.readsfalse
In some workloads, the data read from HDFS is known to be significantly
large enough that it is unlikely to be useful to cache it in the
operating system buffer cache. In this case, the DataNode may be
configured to automatically purge all data from the buffer cache
after it is delivered to the client. This behavior is automatically
disabled for workloads which read only short sections of a block
(e.g HBase random-IO workloads).
This may improve performance for some workloads by freeing buffer
cache space usage for more cacheable data.
If the Hadoop native libraries are not available, this configuration
has no effect.
dfs.datanode.drop.cache.behind.writesfalse
In some workloads, the data written to HDFS is known to be significantly
large enough that it is unlikely to be useful to cache it in the
operating system buffer cache. In this case, the DataNode may be
configured to automatically purge all data from the buffer cache
after it is written to disk.
This may improve performance for some workloads by freeing buffer
cache space usage for more cacheable data.
If the Hadoop native libraries are not available, this configuration
has no effect.
dfs.datanode.sync.behind.writesfalse
If this configuration is enabled, the datanode will instruct the
operating system to enqueue all written data to the disk immediately
after it is written. This differs from the usual OS policy which
may wait for up to 30 seconds before triggering writeback.
This may improve performance for some workloads by smoothing the
IO profile for data written to disk.
If the Hadoop native libraries are not available, this configuration
has no effect.
dfs.client.failover.max.attempts15
Expert only. The number of client failover attempts that should be
made before the failover is considered failed.
dfs.client.failover.sleep.base.millis500
Expert only. The time to wait, in milliseconds, between failover
attempts increases exponentially as a function of the number of
attempts made so far, with a random factor of +/- 50%. This option
specifies the base value used in the failover calculation. The
first failover will retry immediately. The 2nd failover attempt
will delay at least dfs.client.failover.sleep.base.millis
milliseconds. And so on.
dfs.client.failover.sleep.max.millis15000
Expert only. The time to wait, in milliseconds, between failover
attempts increases exponentially as a function of the number of
attempts made so far, with a random factor of +/- 50%. This option
specifies the maximum value to wait between failovers.
Specifically, the time between two failover attempts will not
exceed +/- 50% of dfs.client.failover.sleep.max.millis
milliseconds.
dfs.client.failover.connection.retries0
Expert only. Indicates the number of retries a failover IPC client
will make to establish a server connection.
dfs.client.failover.connection.retries.on.timeouts0
Expert only. The number of retry attempts a failover IPC client
will make on socket timeout when establishing a server connection.
dfs.client.datanode-restart.timeout30
Expert only. The time to wait, in seconds, from reception of an
datanode shutdown notification for quick restart, until declaring
the datanode dead and invoking the normal recovery mechanisms.
The notification is sent by a datanode when it is being shutdown
using the shutdownDatanode admin command with the upgrade option.
dfs.nameservices
Comma-separated list of nameservices.
dfs.nameservice.id
The ID of this nameservice. If the nameservice ID is not
configured or more than one nameservice is configured for
dfs.nameservices it is determined automatically by
matching the local node's address with the configured address.
dfs.internal.nameservices
Comma-separated list of nameservices that belong to this cluster.
Datanode will report to all the nameservices in this list. By default
this is set to the value of dfs.nameservices.
dfs.ha.namenodes.EXAMPLENAMESERVICE
The prefix for a given nameservice, contains a comma-separated
list of namenodes for a given nameservice (eg EXAMPLENAMESERVICE).
dfs.ha.namenode.id
The ID of this namenode. If the namenode ID is not configured it
is determined automatically by matching the local node's address
with the configured address.
dfs.ha.log-roll.period120
How often, in seconds, the StandbyNode should ask the active to
roll edit logs. Since the StandbyNode only reads from finalized
log segments, the StandbyNode will only be as up-to-date as how
often the logs are rolled. Note that failover triggers a log roll
so the StandbyNode will be up to date before it becomes active.
dfs.ha.tail-edits.period60
How often, in seconds, the StandbyNode should check for new
finalized log segments in the shared edits log.
dfs.ha.automatic-failover.enabledfalse
Whether automatic failover is enabled. See the HDFS High
Availability documentation for details on automatic HA
configuration.
dfs.client.use.datanode.hostnamefalseWhether clients should use datanode hostnames when
connecting to datanodes.
dfs.datanode.use.datanode.hostnamefalseWhether datanodes should use datanode hostnames when
connecting to other datanodes for data transfer.
dfs.client.local.interfacesA comma separated list of network interface names to use
for data transfer between the client and datanodes. When creating
a connection to read from or write to a datanode, the client
chooses one of the specified interfaces at random and binds its
socket to the IP of that interface. Individual names may be
specified as either an interface name (eg "eth0"), a subinterface
name (eg "eth0:0"), or an IP address (which may be specified using
CIDR notation to match a range of IPs).
dfs.datanode.shared.file.descriptor.paths/dev/shm,/tmp
A comma-separated list of paths to use when creating file descriptors that
will be shared between the DataNode and the DFSClient. Typically we use
/dev/shm, so that the file descriptors will not be written to disk.
Systems that don't have /dev/shm will fall back to /tmp by default.
dfs.short.circuit.shared.memory.watcher.interrupt.check.ms60000
The length of time in milliseconds that the short-circuit shared memory
watcher will go between checking for java interruptions sent from other
threads. This is provided mainly for unit tests.
dfs.namenode.kerberos.internal.spnego.principal${dfs.web.authentication.kerberos.principal}dfs.secondary.namenode.kerberos.internal.spnego.principal${dfs.web.authentication.kerberos.principal}dfs.namenode.kerberos.principal.pattern*
A client-side RegEx that can be configured to control
allowed realms to authenticate with (useful in cross-realm env.)
dfs.namenode.avoid.read.stale.datanodefalse
Indicate whether or not to avoid reading from "stale" datanodes whose
heartbeat messages have not been received by the namenode
for more than a specified time interval. Stale datanodes will be
moved to the end of the node list returned for reading. See
dfs.namenode.avoid.write.stale.datanode for a similar setting for writes.
dfs.namenode.avoid.write.stale.datanodefalse
Indicate whether or not to avoid writing to "stale" datanodes whose
heartbeat messages have not been received by the namenode
for more than a specified time interval. Writes will avoid using
stale datanodes unless more than a configured ratio
(dfs.namenode.write.stale.datanode.ratio) of datanodes are marked as
stale. See dfs.namenode.avoid.read.stale.datanode for a similar setting
for reads.
dfs.namenode.stale.datanode.interval30000
Default time interval for marking a datanode as "stale", i.e., if
the namenode has not received heartbeat msg from a datanode for
more than this time interval, the datanode will be marked and treated
as "stale" by default. The stale interval cannot be too small since
otherwise this may cause too frequent change of stale states.
We thus set a minimum stale interval value (the default value is 3 times
of heartbeat interval) and guarantee that the stale interval cannot be less
than the minimum value. A stale data node is avoided during lease/block
recovery. It can be conditionally avoided for reads (see
dfs.namenode.avoid.read.stale.datanode) and for writes (see
dfs.namenode.avoid.write.stale.datanode).
dfs.namenode.write.stale.datanode.ratio0.5f
When the ratio of number stale datanodes to total datanodes marked
is greater than this ratio, stop avoiding writing to stale nodes so
as to prevent causing hotspots.
dfs.namenode.invalidate.work.pct.per.iteration0.32f
*Note*: Advanced property. Change with caution.
This determines the percentage amount of block
invalidations (deletes) to do over a single DN heartbeat
deletion command. The final deletion count is determined by applying this
percentage to the number of live nodes in the system.
The resultant number is the number of blocks from the deletion list
chosen for proper invalidation over a single heartbeat of a single DN.
Value should be a positive, non-zero percentage in float notation (X.Yf),
with 1.0f meaning 100%.
dfs.namenode.replication.work.multiplier.per.iteration2
*Note*: Advanced property. Change with caution.
This determines the total amount of block transfers to begin in
parallel at a DN, for replication, when such a command list is being
sent over a DN heartbeat by the NN. The actual number is obtained by
multiplying this multiplier with the total number of live nodes in the
cluster. The result number is the number of blocks to begin transfers
immediately for, per DN heartbeat. This number can be any positive,
non-zero integer.
nfs.server.port2049
Specify the port number used by Hadoop NFS.
nfs.mountd.port4242
Specify the port number used by Hadoop mount daemon.
nfs.dump.dir/tmp/.hdfs-nfs
This directory is used to temporarily save out-of-order writes before
writing to HDFS. For each file, the out-of-order writes are dumped after
they are accumulated to exceed certain threshold (e.g., 1MB) in memory.
One needs to make sure the directory has enough space.
nfs.rtmax1048576This is the maximum size in bytes of a READ request
supported by the NFS gateway. If you change this, make sure you
also update the nfs mount's rsize(add rsize= # of bytes to the
mount directive).
nfs.wtmax1048576This is the maximum size in bytes of a WRITE request
supported by the NFS gateway. If you change this, make sure you
also update the nfs mount's wsize(add wsize= # of bytes to the
mount directive).
nfs.keytab.file
*Note*: Advanced property. Change with caution.
This is the path to the keytab file for the hdfs-nfs gateway.
This is required when the cluster is kerberized.
nfs.kerberos.principal
*Note*: Advanced property. Change with caution.
This is the name of the kerberos principal. This is required when
the cluster is kerberized.It must be of this format:
nfs-gateway-user/nfs-gateway-host@kerberos-realm
nfs.allow.insecure.portstrue
When set to false, client connections originating from unprivileged ports
(those above 1023) will be rejected. This is to ensure that clients
connecting to this NFS Gateway must have had root privilege on the machine
where they're connecting from.
dfs.webhdfs.enabledtrue
Enable WebHDFS (REST API) in Namenodes and Datanodes.
hadoop.fuse.connection.timeout300
The minimum number of seconds that we'll cache libhdfs connection objects
in fuse_dfs. Lower values will result in lower memory consumption; higher
values may speed up access by avoiding the overhead of creating new
connection objects.
hadoop.fuse.timer.period5
The number of seconds between cache expiry checks in fuse_dfs. Lower values
will result in fuse_dfs noticing changes to Kerberos ticket caches more
quickly.
dfs.metrics.percentiles.intervals
Comma-delimited set of integers denoting the desired rollover intervals
(in seconds) for percentile latency metrics on the Namenode and Datanode.
By default, percentile latency metrics are disabled.
hadoop.user.group.metrics.percentiles.intervals
A comma-separated list of the granularity in seconds for the metrics
which describe the 50/75/90/95/99th percentile latency for group resolution
in milliseconds.
By default, percentile latency metrics are disabled.
dfs.encrypt.data.transferfalse
Whether or not actual block data that is read/written from/to HDFS should
be encrypted on the wire. This only needs to be set on the NN and DNs,
clients will deduce this automatically. It is possible to override this setting
per connection by specifying custom logic via dfs.trustedchannel.resolver.class.
dfs.encrypt.data.transfer.algorithm
This value may be set to either "3des" or "rc4". If nothing is set, then
the configured JCE default on the system is used (usually 3DES.) It is
widely believed that 3DES is more cryptographically secure, but RC4 is
substantially faster.
Note that if AES is supported by both the client and server then this
encryption algorithm will only be used to initially transfer keys for AES.
(See dfs.encrypt.data.transfer.cipher.suites.)
dfs.encrypt.data.transfer.cipher.suites
This value may be either undefined or AES/CTR/NoPadding. If defined, then
dfs.encrypt.data.transfer uses the specified cipher suite for data
encryption. If not defined, then only the algorithm specified in
dfs.encrypt.data.transfer.algorithm is used. By default, the property is
not defined.
dfs.encrypt.data.transfer.cipher.key.bitlength128
The key bitlength negotiated by dfsclient and datanode for encryption.
This value may be set to either 128, 192 or 256.
dfs.trustedchannel.resolver.class
TrustedChannelResolver is used to determine whether a channel
is trusted for plain data transfer. The TrustedChannelResolver is
invoked on both client and server side. If the resolver indicates
that the channel is trusted, then the data transfer will not be
encrypted even if dfs.encrypt.data.transfer is set to true. The
default implementation returns false indicating that the channel
is not trusted.
dfs.data.transfer.protection
A comma-separated list of SASL protection values used for secured
connections to the DataNode when reading or writing block data. Possible
values are authentication, integrity and privacy. authentication means
authentication only and no integrity or privacy; integrity implies
authentication and integrity are enabled; and privacy implies all of
authentication, integrity and privacy are enabled. If
dfs.encrypt.data.transfer is set to true, then it supersedes the setting for
dfs.data.transfer.protection and enforces that all connections must use a
specialized encrypted SASL handshake. This property is ignored for
connections to a DataNode listening on a privileged port. In this case, it
is assumed that the use of a privileged port establishes sufficient trust.
dfs.data.transfer.saslproperties.resolver.class
SaslPropertiesResolver used to resolve the QOP used for a connection to the
DataNode when reading or writing block data. If not specified, the value of
hadoop.security.saslproperties.resolver.class is used as the default value.
dfs.datanode.hdfs-blocks-metadata.enabledfalse
Boolean which enables backend datanode-side support for the experimental DistributedFileSystem#getFileVBlockStorageLocations API.
dfs.client.file-block-storage-locations.num-threads10
Number of threads used for making parallel RPCs in DistributedFileSystem#getFileBlockStorageLocations().
dfs.client.file-block-storage-locations.timeout.millis1000
Timeout (in milliseconds) for the parallel RPCs made in DistributedFileSystem#getFileBlockStorageLocations().
dfs.journalnode.rpc-address0.0.0.0:8485
The JournalNode RPC server address and port.
dfs.journalnode.http-address0.0.0.0:8480
The address and port the JournalNode HTTP server listens on.
If the port is 0 then the server will start on a free port.
dfs.journalnode.https-address0.0.0.0:8481
The address and port the JournalNode HTTPS server listens on.
If the port is 0 then the server will start on a free port.
dfs.namenode.audit.loggersdefault
List of classes implementing audit loggers that will receive audit events.
These should be implementations of org.apache.hadoop.hdfs.server.namenode.AuditLogger.
The special value "default" can be used to reference the default audit
logger, which uses the configured log system. Installing custom audit loggers
may affect the performance and stability of the NameNode. Refer to the custom
logger's documentation for more details.
dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold10737418240
Only used when the dfs.datanode.fsdataset.volume.choosing.policy is set to
org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy.
This setting controls how much DN volumes are allowed to differ in terms of
bytes of free disk space before they are considered imbalanced. If the free
space of all the volumes are within this range of each other, the volumes
will be considered balanced and block assignments will be done on a pure
round robin basis.
dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction0.75f
Only used when the dfs.datanode.fsdataset.volume.choosing.policy is set to
org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy.
This setting controls what percentage of new block allocations will be sent
to volumes with more available disk space than others. This setting should
be in the range 0.0 - 1.0, though in practice 0.5 - 1.0, since there should
be no reason to prefer that volumes with less available disk space receive
more block allocations.
dfs.namenode.edits.noeditlogchannelflushfalse
Specifies whether to flush edit log file channel. When set, expensive
FileChannel#force calls are skipped and synchronous disk writes are
enabled instead by opening the edit log file with RandomAccessFile("rws")
flags. This can significantly improve the performance of edit log writes
on the Windows platform.
Note that the behavior of the "rws" flags is platform and hardware specific
and might not provide the same level of guarantees as FileChannel#force.
For example, the write will skip the disk-cache on SAS and SCSI devices
while it might not on SATA devices. This is an expert level setting,
change with caution.
dfs.client.cache.drop.behind.writes
Just like dfs.datanode.drop.cache.behind.writes, this setting causes the
page cache to be dropped behind HDFS writes, potentially freeing up more
memory for other uses. Unlike dfs.datanode.drop.cache.behind.writes, this
is a client-side setting rather than a setting for the entire datanode.
If present, this setting will override the DataNode default.
If the native libraries are not available to the DataNode, this
configuration has no effect.
dfs.client.cache.drop.behind.reads
Just like dfs.datanode.drop.cache.behind.reads, this setting causes the
page cache to be dropped behind HDFS reads, potentially freeing up more
memory for other uses. Unlike dfs.datanode.drop.cache.behind.reads, this
is a client-side setting rather than a setting for the entire datanode. If
present, this setting will override the DataNode default.
If the native libraries are not available to the DataNode, this
configuration has no effect.
dfs.client.cache.readahead
When using remote reads, this setting causes the datanode to
read ahead in the block file using posix_fadvise, potentially decreasing
I/O wait times. Unlike dfs.datanode.readahead.bytes, this is a client-side
setting rather than a setting for the entire datanode. If present, this
setting will override the DataNode default.
When using local reads, this setting determines how much readahead we do in
BlockReaderLocal.
If the native libraries are not available to the DataNode, this
configuration has no effect.
dfs.namenode.enable.retrycachetrue
This enables the retry cache on the namenode. Namenode tracks for
non-idempotent requests the corresponding response. If a client retries the
request, the response from the retry cache is sent. Such operations
are tagged with annotation @AtMostOnce in namenode protocols. It is
recommended that this flag be set to true. Setting it to false, will result
in clients getting failure responses to retried request. This flag must
be enabled in HA setup for transparent fail-overs.
The entries in the cache have expiration time configurable
using dfs.namenode.retrycache.expirytime.millis.
dfs.namenode.retrycache.expirytime.millis600000
The time for which retry cache entries are retained.
dfs.namenode.retrycache.heap.percent0.03f
This parameter configures the heap size allocated for retry cache
(excluding the response cached). This corresponds to approximately
4096 entries for every 64MB of namenode process java heap size.
Assuming retry cache entry expiration time (configured using
dfs.namenode.retrycache.expirytime.millis) of 10 minutes, this
enables retry cache to support 7 operations per second sustained
for 10 minutes. As the heap size is increased, the operation rate
linearly increases.
dfs.client.mmap.enabledtrue
If this is set to false, the client won't attempt to perform memory-mapped reads.
dfs.client.mmap.cache.size256
When zero-copy reads are used, the DFSClient keeps a cache of recently used
memory mapped regions. This parameter controls the maximum number of
entries that we will keep in that cache.
The larger this number is, the more file descriptors we will potentially
use for memory-mapped files. mmaped files also use virtual address space.
You may need to increase your ulimit virtual address space limits before
increasing the client mmap cache size.
Note that you can still do zero-copy reads when this size is set to 0.
dfs.client.mmap.cache.timeout.ms3600000
The minimum length of time that we will keep an mmap entry in the cache
between uses. If an entry is in the cache longer than this, and nobody
uses it, it will be removed by a background thread.
dfs.client.mmap.retry.timeout.ms300000
The minimum amount of time that we will wait before retrying a failed mmap
operation.
dfs.client.short.circuit.replica.stale.threshold.ms1800000
The maximum amount of time that we will consider a short-circuit replica to
be valid, if there is no communication from the DataNode. After this time
has elapsed, we will re-fetch the short-circuit replica even if it is in
the cache.
dfs.namenode.path.based.cache.block.map.allocation.percent0.25
The percentage of the Java heap which we will allocate to the cached blocks
map. The cached blocks map is a hash map which uses chained hashing.
Smaller maps may be accessed more slowly if the number of cached blocks is
large; larger maps will consume more memory.
dfs.datanode.max.locked.memory0
The amount of memory in bytes to use for caching of block replicas in
memory on the datanode. The datanode's maximum locked memory soft ulimit
(RLIMIT_MEMLOCK) must be set to at least this value, else the datanode
will abort on startup.
By default, this parameter is set to 0, which disables in-memory caching.
If the native libraries are not available to the DataNode, this
configuration has no effect.
dfs.namenode.list.cache.directives.num.responses100
This value controls the number of cache directives that the NameNode will
send over the wire in response to a listDirectives RPC.
dfs.namenode.list.cache.pools.num.responses100
This value controls the number of cache pools that the NameNode will
send over the wire in response to a listPools RPC.
dfs.namenode.path.based.cache.refresh.interval.ms30000
The amount of milliseconds between subsequent path cache rescans. Path
cache rescans are when we calculate which blocks should be cached, and on
what datanodes.
By default, this parameter is set to 30 seconds.
dfs.namenode.path.based.cache.retry.interval.ms30000
When the NameNode needs to uncache something that is cached, or cache
something that is not cached, it must direct the DataNodes to do so by
sending a DNA_CACHE or DNA_UNCACHE command in response to a DataNode
heartbeat. This parameter controls how frequently the NameNode will
resend these commands.
dfs.datanode.fsdatasetcache.max.threads.per.volume4
The maximum number of threads per volume to use for caching new data
on the datanode. These threads consume both I/O and CPU. This can affect
normal datanode operations.
dfs.cachereport.intervalMsec10000
Determines cache reporting interval in milliseconds. After this amount of
time, the DataNode sends a full report of its cache state to the NameNode.
The NameNode uses the cache report to update its map of cached blocks to
DataNode locations.
This configuration has no effect if in-memory caching has been disabled by
setting dfs.datanode.max.locked.memory to 0 (which is the default).
If the native libraries are not available to the DataNode, this
configuration has no effect.
dfs.namenode.edit.log.autoroll.multiplier.threshold2.0
Determines when an active namenode will roll its own edit log.
The actual threshold (in number of edits) is determined by multiplying
this value by dfs.namenode.checkpoint.txns.
This prevents extremely large edit files from accumulating on the active
namenode, which can cause timeouts during namenode startup and pose an
administrative hassle. This behavior is intended as a failsafe for when
the standby or secondary namenode fail to roll the edit log by the normal
checkpoint threshold.
dfs.namenode.edit.log.autoroll.check.interval.ms300000
How often an active namenode will check if it needs to roll its edit log,
in milliseconds.
dfs.webhdfs.user.provider.user.pattern^[A-Za-z_][A-Za-z0-9._-]*[$]?$
Valid pattern for user and group names for webhdfs, it must be a valid java regex.
dfs.client.contextdefault
The name of the DFSClient context that we should use. Clients that share
a context share a socket cache and short-circuit cache, among other things.
You should only change this if you don't want to share with another set of
threads.
dfs.client.read.shortcircuitfalse
This configuration parameter turns on short-circuit local reads.
dfs.domain.socket.path
Optional. This is a path to a UNIX domain socket that will be used for
communication between the DataNode and local HDFS clients.
If the string "_PORT" is present in this path, it will be replaced by the
TCP port of the DataNode.
dfs.client.read.shortcircuit.skip.checksumfalse
If this configuration parameter is set,
short-circuit local reads will skip checksums.
This is normally not recommended,
but it may be useful for special setups.
You might consider using this
if you are doing your own checksumming outside of HDFS.
dfs.client.read.shortcircuit.streams.cache.size256
The DFSClient maintains a cache of recently opened file descriptors.
This parameter controls the size of that cache.
Setting this higher will use more file descriptors,
but potentially provide better performance on workloads
involving lots of seeks.
dfs.client.read.shortcircuit.streams.cache.expiry.ms300000
This controls the minimum amount of time
file descriptors need to sit in the client cache context
before they can be closed for being inactive for too long.
dfs.datanode.shared.file.descriptor.paths/dev/shm,/tmp
Comma separated paths to the directory on which
shared memory segments are created.
The client and the DataNode exchange information via
this shared memory segment.
It tries paths in order until creation of shared memory segment succeeds.
dfs.client.use.legacy.blockreader.localfalse
Legacy short-circuit reader implementation based on HDFS-2246 is used
if this configuration parameter is true.
This is for the platforms other than Linux
where the new implementation based on HDFS-347 is not available.
dfs.block.local-path-access.user
Comma separated list of the users allowd to open block files
on legacy short-circuit local read.
dfs.client.domain.socket.data.trafficfalse
This control whether we will try to pass normal data traffic
over UNIX domain socket rather than over TCP socket
on node-local data transfer.
This is currently experimental and turned off by default.
dfs.namenode.reject-unresolved-dn-topology-mappingfalse
If the value is set to true, then namenode will reject datanode
registration if the topology mapping for a datanode is not resolved and
NULL is returned (script defined by net.topology.script.file.name fails
to execute). Otherwise, datanode will be registered and the default rack
will be assigned as the topology path. Topology paths are important for
data resiliency, since they define fault domains. Thus it may be unwanted
behavior to allow datanode registration with the default rack if the
resolving topology failed.
dfs.client.slow.io.warning.threshold.ms30000The threshold in milliseconds at which we will log a slow
io warning in a dfsclient. By default, this parameter is set to 30000
milliseconds (30 seconds).
dfs.datanode.slow.io.warning.threshold.ms300The threshold in milliseconds at which we will log a slow
io warning in a datanode. By default, this parameter is set to 300
milliseconds.
dfs.namenode.xattrs.enabledtrue
Whether support for extended attributes is enabled on the NameNode.
dfs.namenode.fs-limits.max-xattrs-per-inode32
Maximum number of extended attributes per inode.
dfs.namenode.fs-limits.max-xattr-size16384
The maximum combined size of the name and value of an extended attribute in bytes.
dfs.namenode.startup.delay.block.deletion.sec0The delay in seconds at which we will pause the blocks deletion
after Namenode startup. By default it's disabled.
In the case a directory has large number of directories and files are
deleted, suggested delay is one hour to give the administrator enough time
to notice large number of pending deletion blocks and take corrective
action.
dfs.namenode.list.encryption.zones.num.responses100When listing encryption zones, the maximum number of zones
that will be returned in a batch. Fetching the list incrementally in
batches improves namenode performance.
dfs.namenode.inotify.max.events.per.rpc1000Maximum number of events that will be sent to an inotify client
in a single RPC response. The default value attempts to amortize away
the overhead for this RPC while avoiding huge memory requirements for the
client and NameNode (1000 events should consume no more than 1 MB.)
dfs.user.home.dir.prefix/userThe directory to prepend to user name to get the user's
home direcotry.
dfs.datanode.cache.revocation.timeout.ms900000When the DFSClient reads from a block file which the DataNode is
caching, the DFSClient can skip verifying checksums. The DataNode will
keep the block file in cache until the client is done. If the client takes
an unusually long time, though, the DataNode may need to evict the block
file from the cache anyway. This value controls how long the DataNode will
wait for the client to release a replica that it is reading without
checksums.
dfs.datanode.cache.revocation.polling.ms500How often the DataNode should poll to see if the clients have
stopped using a replica that the DataNode wants to uncache.
dfs.datanode.block.id.layout.upgrade.threads12The number of threads to use when creating hard links from
current to previous blocks during upgrade of a DataNode to block ID-based
block layout (see HDFS-6482 for details on the layout).dfs.encryption.key.provider.uri
The KeyProvider to use when interacting with encryption keys used
when reading and writing to an encryption zone.
dfs.storage.policy.enabledtrue
Allow users to change the storage policy on files and directories.
dfs.namenode.legacy-oiv-image.dirDetermines where to save the namespace in the old fsimage format
during checkpointing by standby NameNode or SecondaryNameNode. Users can
dump the contents of the old format fsimage by oiv_legacy command. If
the value is not specified, old format fsimage will not be saved in
checkpoint.
dfs.namenode.top.enabledtrueEnable nntop: reporting top users on namenode
dfs.namenode.top.window.num.buckets10Number of buckets in the rolling window implementation of nntop
dfs.namenode.top.num.users10Number of top users returned by the top tool
dfs.namenode.top.windows.minutes1,5,25comma separated list of nntop reporting periods in minutes
dfs.namenode.blocks.per.postponedblocks.rescan10000Number of blocks to rescan for each iteration of
postponedMisreplicatedBlocks.
dfs.datanode.block-pinning.enabledfalseWhether pin blocks on favored DataNode.