hadoop-hdfs相关的配置信息
name | value | description |
---|---|---|
hadoop.hdfs.configuration.version | 1 | version of this configuration file |
dfs.namenode.logging.level | info | The logging level for dfs namenode. Other values are “dir” (trace namespace mutations), “block” (trace block under/over replications and block creations/deletions), or “all”. |
dfs.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 server will bind to. If this optional address is set, the RPC server will bind to this address and the port specified in dfs.namenode.rpc-address for the RPC server. It can also be specified per name node or name service for HA/Federation. This is most useful for making name node listen to all interfaces by setting 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 server will bind to. If this optional address is set, the service RPC server will bind to this address and the port specified in dfs.namenode.servicerpc-address. It can also be specified per name node or name service for HA/Federation. This is most useful for making name node listen to all interfaces by setting to 0.0.0.0. | |
dfs.namenode.secondary.http-address | 0.0.0.0:50090 | The secondary namenode http server address and port. |
dfs.namenode.secondary.https-address | 0.0.0.0:50091 | The secondary namenode HTTPS server address and port. |
dfs.datanode.address | 0.0.0.0:50010 | The datanode server address and port for data transfer. |
dfs.datanode.http.address | 0.0.0.0:50075 | The datanode http server address and port. |
dfs.datanode.ipc.address | 0.0.0.0:50020 | The datanode ipc server address and port. DN的IPC地址和端口。0表示任意空闲端口。 0.0.0.0的含义: 它不只是代表本机,0.0.0.0/8可以表示本网络中的所有主机,0.0.0.0/32可以用作本机的源地址,0.0.0.0/8也可表示本网络上的某个特定主机,综合起来可以说0.0.0.0表示整个网络。它的作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。 |
dfs.datanode.handler.count | 10 | The number of server threads for the datanode. DN的服务线程数。这些线程仅用于接收请求,处理业务命令 |
dfs.namenode.http-address | 0.0.0.0:50070 | The address and the base port where the dfs namenode web ui will listen on. |
dfs.https.enable | false | Deprecated. Use “dfs.http.policy” instead. |
dfs.http.policy | HTTP_ONLY | Decide 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-auth | false | Whether SSL client certificate authentication is required |
dfs.client.cached.conn.retry | 3 | The 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.resource | ssl-server.xml | Resource file from which ssl server keystore information will be extracted |
dfs.client.https.keystore.resource | ssl-client.xml | Resource file from which ssl client keystore information will be extracted |
dfs.datanode.https.address | 0.0.0.0:50475 | The datanode secure http server address and port. |
dfs.namenode.https-address | 0.0.0.0:50470 | The namenode secure http server address and port. |
dfs.datanode.dns.interface | default | The name of the Network Interface from which a data node should report its IP address. |
dfs.datanode.dns.nameserver | default | The 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.address | 0.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-address | 0.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.considerLoad | true | Decide if chooseTarget considers the target’s load or not |
dfs.default.chunk.view.size | 32768 | The number of bytes to view for a file on the browser. |
dfs.datanode.du.reserved | 0 | Reserved space in bytes per volume. Always leave this much space free for non dfs use. |
dfs.namenode.name.dir | file://${hadoop.tmp.dir}/dfs/name | Determines 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. 本地磁盘目录,NN存储fsimage文件的地方。可以是按逗号分隔的目录列表,fsimage文件会存储在全部目录,冗余安全。这里多个目录设定,最好在多个磁盘,另外,如果其中一个磁盘故障,不会导致系统故障,会跳过坏磁盘。由于使用了HA,建议仅设置一个。如果特别在意安全,可以设置2个 |
dfs.namenode.name.dir.restore | false | Set 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-length | 255 | Defines 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-items | 1048576 | Defines the maximum number of items that a directory may contain. A value of 0 will disable the check. |
dfs.namenode.fs-limits.min-block-size | 1048576 | Minimum 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. 最小的Block大小,字节。在NN创建时强制验证。避免用户设定过小的Block Size,导致过多的Block,这非常影响性能。 |
dfs.namenode.fs-limits.max-blocks-per-file | 1048576 | Maximum number of blocks per file, enforced by the Namenode on write. This prevents the creation of extremely large files which can degrade performance. 每个文件最大的Block数。在NN写时强制检查。用于防止创建超大文件。 |
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.dir | A 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.qjournal | org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager | |
dfs.permissions.enabled | true | 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.superusergroup | supergroup | The name of the group of super-users. |
dfs.namenode.acls.enabled | false | 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.block.access.token.enable | false | 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.interval | 600 | Interval in minutes at which namenode updates its access keys. |
dfs.block.access.token.lifetime | 600 | The lifetime of access tokens in minutes. |
dfs.datanode.data.dir | file://${hadoop.tmp.dir}/dfs/data | Determines 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. Directories that do not exist are ignored. 本地磁盘目录,HDFS数据应该存储Block的地方。可以是逗号分隔的目录列表(典型的,每个目录在不同的磁盘)。这些目录被轮流使用,一个块存储在这个目录,下一个块存储在下一个目录,依次循环。每个块在同一个机器上仅存储一份。不存在的目录被忽略。必须创建文件夹,否则被视为不存在。 |
dfs.datanode.data.dir.perm | 700 | Permissions 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.replication | 3 | Default 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.max | 512 | Maximal block replication. 最大块副本数,不要大于节点总数。 |
dfs.namenode.replication.min | 1 | Minimal block replication. 最小块副本数。在上传文件时,达到最小副本数,就认为上传是成功的 |
dfs.blocksize | 134217728 | 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). 块大小,字节。可以使用后缀: k(kilo), m(mega), g(giga), t(tera), p(peta), e(exa)指定大小 (就像128k, 512m, 1g, 等待)。 |
dfs.client.block.write.retries | 3 | The number of retries for writing blocks to the data nodes, before we signal failure to the application. 客户端写数据到DN时,最大重试次数。超过重试次数就会报出错误。 |
dfs.client.block.write.replace-datanode-on-failure.enable | true | 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 在进行pipeline写数据(上传数据的方式)时,如果DN或者磁盘故障,客户端将尝试移除失败的DN,然后写到剩下的磁盘。一个结果是,pipeline中的DN减少了。这个特性是添加新的DN到pipeline。这是一个站点范围的选项。当集群规模非常小时,例如3个或者更小,集群管理者可能想要禁止掉此特性。 |
dfs.client.block.write.replace-datanode-on-failure.policy | DEFAULT | 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.enable设置为true时有效。 ALWAYS: 总是添加新的DN NEVER: 从不添加新的DN DEFAULT: 设r是副本数,n是要写的DN数。在r>=3并且floor(r/2)>=n或者r>n(前提是文件是hflushed/appended)时添加新的DN。 来自 http://blog.csdn.net/javastart/article/details/50349835 |
dfs.blockreport.intervalMsec | 21600000 | Determines block reporting interval in milliseconds. 数据块汇报间隔,毫秒,默认是6小时。 |
dfs.blockreport.initialDelay | 0 | Delay for first block report in seconds. 第一次数据块汇报时延迟,秒。目的是减轻NN压力? |
dfs.blockreport.split.threshold | 1000000 | If 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.interval | 21600 | Interval in seconds for Datanode to scan data directories and reconcile the difference between blocks in memory and on the disk. DN的数据块扫描间隔,秒。磁盘上数据和内存中数据调整一致。 |
dfs.datanode.directoryscan.threads | 1 | How many threads should the threadpool used to compile reports for volumes in parallel have. 线程池要有多少线程用来并发的压缩磁盘的汇报数据。 |
dfs.heartbeat.interval | 3 | Determines datanode heartbeat interval in seconds. DN的心跳间隔,秒 |
dfs.namenode.handler.count | 10 | The number of server threads for the namenode. NN的服务线程数。用于处理RPC请求。 |
dfs.namenode.safemode.threshold-pct | 0.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. 数据进入安全模式阀值,百分比,float形式,数据块达到最小副本数(dfs.namenode.replication.min)的百分比。值小于等于0意味着在退出安全模式前不等待数据修复。大于1的值将导致无法离开安全模式。 |
dfs.namenode.safemode.min.datanodes | 0 | 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. NN收到回报的DN的数量的最小值,达不到此值,NN不退出安全模式。(在系统启动时发生作用)。<=0的值表示不关心DN数量,在启动时。大于DN实际数量的值会导致无法离开安全模式。建议不设置此值 |
dfs.namenode.safemode.extension | 30000 | Determines extension of safe mode in milliseconds after the threshold level is reached. 安全模式扩展存在时间,在需要的阀值达到后,毫秒。可以设置为0,或者比较短的一个时间,例如3秒 |
dfs.datanode.balance.bandwidthPerSec | 1048576 | Specifies the maximum amount of bandwidth that each datanode can utilize for the balancing purpose in term of the number of bytes per second. 在做数据平衡时,每个DN最大带宽占用,每秒字节。默认值是1M。建议可以到**10M |
dfs.hosts | Names 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. 文件名,包含了一个host列表,允许列表内机器连到NN。必须指定完整路径。如果值为空,全部hosts都允许连入。 | |
dfs.hosts.exclude | Names 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. 文件名,包含了一个hosts列表,不允许列表内机器连到NN。必须指定完整路径。如果值为空。没有host被禁止。如果上述2个都设置并且有重合,dfs.hosts中优先级高*。* | |
dfs.namenode.max.objects | 0 | The 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支持的最大文件、目录、数据块数量。0无限制。 |
dfs.namenode.datanode.registration.ip-hostname-check | true | 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.interval | 30 | Namenode periodicity in seconds to check if decommission is complete. NN周期性检查退役是否完成的间隔,秒。 |
dfs.namenode.decommission.nodes.per.interval | 5 | The number of nodes namenode checks if decommission is complete in each dfs.namenode.decommission.interval. NN检查退役是否完成,每dfs.namenode.decommission.interval秒检查的节点数量。 |
dfs.namenode.replication.interval | 3 | The periodicity in seconds with which the namenode computes repliaction work for datanodes. NN周期性计算DN的副本情况的频率,秒。 |
dfs.namenode.accesstime.precision | 3600000 | The 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. HDFS文件的访问时间精确到此值,默认是1小时。0表示禁用访问时间。 |
dfs.datanode.plugins | Comma-separated list of datanode plug-ins to be activated. DN上的插件列表,逗号分隔。 | |
dfs.namenode.plugins | Comma-separated list of namenode plug-ins to be activated. NN上的插件列表,逗号分隔。 | |
dfs.stream-buffer-size | 4096 | The 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. 文件流缓存大小。需要是硬件page大小的整数倍。在读写操作时,数据缓存大小。注意和core-default.xml中指定文件类型的缓存是不同的,这个是dfs共用的 |
dfs.bytes-per-checksum | 512 | The number of bytes per checksum. Must not be larger than dfs.stream-buffer-size |
dfs.client-write-packet-size | 65536 | Packet size for clients to write |
dfs.client.write.exclude.nodes.cache.expiry.interval.millis | 600000 | The 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.dir | file://${hadoop.tmp.dir}/dfs/namesecondary | Determines 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 SNN应该在哪里存放临时[用于合并|合并后](to merge)的Image。如果是逗号分隔的目录列表,Image文件存放多份。冗余备份。建议不使用SNN功能,忽略此配置 |
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 directoires then teh edits is replicated in all of the directoires for redundancy. Default value is same as dfs.namenode.checkpoint.dir 建议不使用SNN功能,忽略此配置 |
dfs.namenode.checkpoint.period | 3600 | The number of seconds between two periodic checkpoints. |
dfs.namenode.checkpoint.txns | 1000000 | The 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.period | 60 | The 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-retries | 3 | The 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.retained | 2 | The number of image checkpoint files that will be retained by the NameNode and Secondary NameNode in their storage directories. All edit logs necessary to recover an up-to-date namespace from the oldest retained checkpoint will also be retained. |
dfs.namenode.num.extra.edits.retained | 1000000 | The number of extra transactions which should be retained beyond what is minimally necessary for a NN restart. This 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. 除最小的必须的editlog之外,额外保留的editlog文件数量。这是有用的,可以用于审核目的,或者HA设置一个远程Standby节点并且有时可能离线时,都需要保留一个较长的backlog。 典型的,每个edit大约几百字节,默认的1百万editlog大约有百兆到1G。注意:早先的extra edits文件可能操作这里设置的值,因为还有其它选项,例如dfs.namenode.max.extra.edits.segments.retained 建议值:2200,约3天的 |
dfs.namenode.max.extra.edits.segments.retained | 10000 | The 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-interval | 86400000 | The update interval for master key for delegation tokens in the namenode in milliseconds. |
dfs.namenode.delegation.token.max-lifetime | 604800000 | The maximum lifetime in milliseconds for which a delegation token is valid. |
dfs.namenode.delegation.token.renew-interval | 86400000 | The renewal interval for delegation token in milliseconds. |
dfs.datanode.failed.volumes.tolerated | 0 | The 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. 可以接受的卷的失败数量。默认值0表示,任一个卷失败都会导致DN关闭。 建议设置此值,避免个别磁盘问题。如果此值超过真实磁盘数,将会报错,启动失败 |
dfs.image.compress | false | Should the dfs image be compressed? |
dfs.image.compression.codec | org.apache.hadoop.io.compress.DefaultCodec | If the dfs image is compressed, how should they be compressed? This has to be a codec defined in io.compression.codecs. |
dfs.image.transfer.timeout | 60000 | 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 tranfer. |
dfs.image.transfer.bandwidthPerSec | 0 | 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.chunksize | 65536 | 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.format | true | Does 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. NN是否允许被格式化?在生产系统,把它设置为false,阻止任何格式化操作在一个运行的DFS上。 建议初次格式化后,修改配置禁止 |
dfs.datanode.max.transfer.threads | 4096 | Specifies the maximum number of threads to use for transferring data in and out of the DN. |
dfs.datanode.readahead.bytes | 4193404 | 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. 预读磁盘数据。如果Hadoop本地库生效,DN可以调用posix_fadvise系统获取页面数据到操作系统的缓存中。这个配置指定读取当前读取位置之前的字节数。设置为0,取消此功能。无本地库,此功能也无效。 |
dfs.datanode.drop.cache.behind.reads | false | 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 spage usage for more cacheable data. If the Hadoop native libraries are not available, this configuration has no effect. 在有些场景下,特别是对一些大的,并且不可能重用的数据,缓存在操作系统的缓存区是无用的。此时,DN可以配置自动清理缓存区数据,在已经发生向客户端之后。此功能自动失效,在读取小数据片时。(例如HBase的随机读写场景)。通过释放缓存,这在某些场景下可以提高性能。Hadoop本地库无效,此功能无效。看起来是一个可以尝试的特性 |
dfs.datanode.drop.cache.behind.writes | false | 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 spage usage for more cacheable data. If the Hadoop native libraries are not available, this configuration has no effect. 同dfs.datanode.drop.cache.behind.reads相似。 |
dfs.datanode.sync.behind.writes | false | 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. 如果是true,在写之后,DN将指示操作系统把队列中数据全部立即写磁盘。和常用的OS策略不同,它们可能在触发写磁盘之前等待30秒。Hadoop本地库无效,此功能无效。 |
dfs.client.failover.max.attempts | 15 | Expert only. The number of client failover attempts that should be made before the failover is considered failed. 专家设置。客户端失败重试次数。 |
dfs.client.failover.sleep.base.millis | 500 | 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.millis | 15000 | 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.retries | 0 | Expert only. Indicates the number of retries a failover IPC client will make to establish a server connection. 专家设置。IPC客户端失败重试次数。在网络不稳定时建议加大此值 |
dfs.client.failover.connection.retries.on.timeouts | 0 | Expert only. The number of retry attempts a failover IPC client will make on socket timeout when establishing a server connection. 专家设置。IPC客户端失败重试次数,此失败仅指超时失败。在网络不稳定时建议加大此值 |
dfs.client.datanode-restart.timeout | 30 | 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. nameservices列表。逗号分隔。 我们常用的仅配置一个,启动federation功能需要配置多个 | |
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.ha.namenodes.EXAMPLENAMESERVICE | The prefix for a given nameservice, contains a comma-separated list of namenodes for a given nameservice (eg EXAMPLENAMESERVICE). 包含一个NN列表。EXAMPLENAMESERVICE是指具体的nameservice名称,通常就是dfs.nameservices中配置的。值是预备配置的NN的ID。 ID是自己取的,不重复就可以,例如nn1,nn2 | |
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.period | 120 | 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. StandbyNode要求Active滚动EditLog,由于StandBy只能从已经完成的Log Segments中读,所以Standby上的数据新鲜程度依赖于以如何的频率滚动日志。秒。另外,故障转移也会触发一次日志滚动,所以StandbyNode在Active之前,数据也会更新成最新的。秒,默认是2分钟。 |
dfs.ha.tail-edits.period | 60 | How often, in seconds, the StandbyNode should check for new finalized log segments in the shared edits log. StandbyNode以此频率检测共享目录中最新的日志,秒 |
dfs.ha.automatic-failover.enabled | false | Whether automatic failover is enabled. See the HDFS High Availability documentation for details on automatic HA configuration. 是否开启自动故障转移。建议开启,true |
dfs.support.append | true | Does HDFS allow appends to files? |
dfs.client.use.datanode.hostname | false | Whether clients should use datanode hostnames when connecting to datanodes. |
dfs.datanode.use.datanode.hostname | false | Whether datanodes should use datanode hostnames when connecting to other datanodes for data transfer. |
dfs.client.local.interfaces | A 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.ms | 60000 | 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.avoid.read.stale.datanode | false | 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. 决定是否避开从脏DN上读数据。脏DN指在一个指定的时间间隔内没有收到心跳信息。脏DN将被移到可以读取节点列表的尾端。尝试开启 |
dfs.namenode.avoid.write.stale.datanode | false | 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.interval | 30000 | 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). 标记一个DN是脏的时间间隔。例如,如果NN在此设定的时间内没有接收到来自某一个节点的心跳信息,此DN将被标记为脏的。此间隔不能太小,否则容易导致被频繁的标记为脏DN。 我们建议是1分钟 |
dfs.namenode.write.stale.datanode.ratio | 0.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. 当全部DN被标记为脏DN的比率高于此阀值,停止不写数据到脏DN的策略,以免造成热点问题(有效的,可写的DN太少,压力太大)。 |
dfs.namenode.invalidate.work.pct.per.iteration | 0.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.iteration | 2 | 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. |
dfs.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. | |
dfs.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 | |
dfs.webhdfs.enabled | true | Enable WebHDFS (REST API) in Namenodes and Datanodes. |
hadoop.fuse.connection.timeout | 300 | 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.period | 5 | 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. | |
dfs.encrypt.data.transfer | false | 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. 是否加密传输数据?仅需要配置在NN和DN。客户端可以自行判断。 |
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. 可以设置为"3des"或"rc4"。否则使用默认的,通常是usually 3DES。3DES更安全,RC4更快。 | |
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.datanode.hdfs-blocks-metadata.enabled | false | Boolean which enables backend datanode-side support for the experimental DistributedFileSystem#getFileVBlockStorageLocations API. 布尔值,设定后台DN端是否支持DistributedFileSystem#getFileVBlockStorageLocations API。 |
dfs.client.file-block-storage-locations.num-threads | 10 | Number of threads used for making parallel RPCs in DistributedFileSystem#getFileBlockStorageLocations(). 在调用DistributedFileSystem#getFileBlockStorageLocations()的并发RPC的线程数 |
dfs.client.file-block-storage-locations.timeout.millis | 1000 | Timeout (in milliseconds) for the parallel RPCs made in DistributedFileSystem#getFileBlockStorageLocations(). |
dfs.journalnode.rpc-address | 0.0.0.0:8485 | The JournalNode RPC server address and port. |
dfs.journalnode.http-address | 0.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-address | 0.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.loggers | default | 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.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.datanode.available-space-volume-choosing-policy.balanced-space-threshold | 10737418240 | 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-fraction | 0.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.noeditlogchannelflush | false | 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.retrycache | true | 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.millis | 600000 | The time for which retry cache entries are retained. |
dfs.namenode.retrycache.heap.percent | 0.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.enabled | true | If this is set to false, the client won’t attempt to perform memory-mapped reads. |
dfs.client.mmap.cache.size | 256 | 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.ms | 3600000 | 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.ms | 300000 | The minimum amount of time that we will wait before retrying a failed mmap operation. |
dfs.client.short.circuit.replica.stale.threshold.ms | 1800000 | 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.percent | 0.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.memory | 0 | 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.responses | 100 | 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.responses | 100 | 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.ms | 30000 | 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.ms | 30000 | 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.volume | 4 | 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.intervalMsec | 10000 | 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.threshold | 2.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.ms | 300000 | How often an active namenode will check if it needs to roll its edit log, in milliseconds. |
dfs.webhdfs.user.provider.user.pattern | 1[A-Za-z0-9._-]*[ ] ? ]? ]? | Valid pattern for user and group names for webhdfs, it must be a valid java regex. |
dfs.client.context | default | 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.namenode.reject-unresolved-dn-topology-mapping | false | 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. |
A-Za-z_ ↩︎