blob: 5ff818f7b0e786316088c7477d33ed9906ff05ec [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Do not modify this file directly. Instead, copy entries that you -->
<!-- wish to modify from this file into ozone-site.xml and change them -->
<!-- there. If ozone-site.xml does not already exist, create it. -->
<!--Tags supported are OZONE, CBLOCK, MANAGEMENT, SECURITY, PERFORMANCE, -->
<!--DEBUG, CLIENT, SERVER, OM, SCM, CRITICAL, RATIS, CONTAINER, REQUIRED, -->
<!--REST, STORAGE, PIPELINE, STANDALONE -->
<configuration>
<!--Container Settings used by Datanode-->
<property>
<name>ozone.container.cache.size</name>
<value>1024</value>
<tag>PERFORMANCE, CONTAINER, STORAGE</tag>
<description>The open container is cached on the data node side. We maintain
an LRU
cache for caching the recently used containers. This setting controls the
size of that cache.
</description>
</property>
<property>
<name>ozone.container.cache.lock.stripes</name>
<value>1024</value>
<tag>PERFORMANCE, CONTAINER, STORAGE</tag>
<description>Container DB open is an exclusive operation. We use a stripe
lock to guarantee that different threads can open different container DBs
concurrently, while for one container DB, only one thread can open it at
the same time. This setting controls the lock stripes.
</description>
</property>
<property>
<name>dfs.container.ipc</name>
<value>9859</value>
<tag>OZONE, CONTAINER, MANAGEMENT</tag>
<description>The ipc port number of container.</description>
</property>
<property>
<name>dfs.container.ipc.random.port</name>
<value>false</value>
<tag>OZONE, DEBUG, CONTAINER</tag>
<description>Allocates a random free port for ozone container. This is used
only while
running unit tests.
</description>
</property>
<property>
<name>dfs.container.chunk.write.sync</name>
<value>false</value>
<tag>OZONE, CONTAINER, MANAGEMENT</tag>
<description>Determines whether the chunk writes in the container happen as
sync I/0 or buffered I/O operation.
</description>
</property>
<property>
<name>dfs.container.ratis.statemachinedata.sync.timeout</name>
<value>10s</value>
<tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
<description>Timeout for StateMachine data writes by Ratis.
</description>
</property>
<property>
<name>dfs.container.ratis.statemachinedata.sync.retries</name>
<value>-1</value>
<tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
<description>Number of times the WriteStateMachineData op will be tried
before failing, if this value is -1, then this retries indefinitely.
</description>
</property>
<property>
<name>dfs.container.ratis.log.queue.num-elements</name>
<value>1024</value>
<tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
<description>Limit for the number of operations in Ratis Log Worker.
</description>
</property>
<property>
<name>dfs.container.ratis.log.queue.byte-limit</name>
<value>4GB</value>
<tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
<description>Byte limit for Ratis Log Worker queue.
</description>
</property>
<property>
<name>dfs.container.ratis.log.appender.queue.num-elements</name>
<value>1</value>
<tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
<description>Limit for number of append entries in ratis leader's
log appender queue.
</description>
</property>
<property>
<name>dfs.container.ratis.log.appender.queue.byte-limit</name>
<value>32MB</value>
<tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
<description>Byte limit for ratis leader's log appender queue.
</description>
</property>
<property>
<name>dfs.container.ratis.log.purge.gap</name>
<value>1000000</value>
<tag>OZONE, DEBUG, CONTAINER, RATIS</tag>
<description>Purge gap between the last purged commit index
and the current index, when the leader decides to purge its log.
</description>
</property>
<property>
<name>dfs.container.ratis.datanode.storage.dir</name>
<value/>
<tag>OZONE, CONTAINER, STORAGE, MANAGEMENT, RATIS</tag>
<description>This directory is used for storing Ratis metadata like logs. If
this is
not set then default metadata dirs is used. A warning will be logged if
this not set. Ideally, this should be mapped to a fast disk like an SSD.
</description>
</property>
<property>
<name>hdds.datanode.dir</name>
<value/>
<tag>OZONE, CONTAINER, STORAGE, MANAGEMENT</tag>
<description>Determines where on the local filesystem HDDS data will be
stored. Defaults to dfs.datanode.data.dir if not specified.
The directories should be tagged with corresponding storage types
([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK]) for storage policies. The default
storage type will be DISK if the directory does not have a storage type
tagged explicitly.
</description>
</property>
<property>
<name>hdds.datanode.container.db.dir</name>
<value/>
<tag>OZONE, CONTAINER, STORAGE, MANAGEMENT</tag>
<description>Determines where the per-disk rocksdb instances will be
stored. This setting is optional. If unspecified, then rocksdb instances
are stored on the same disk as HDDS data.
The directories should be tagged with corresponding storage types
([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK]) for storage policies. The default
storage type will be DISK if the directory does not have a storage type
tagged explicitly. Ideally, this should be mapped to a fast disk
like an SSD.
</description>
</property>
<property>
<name>hdds.datanode.dir.du.reserved</name>
<value/>
<tag>OZONE, CONTAINER, STORAGE, MANAGEMENT</tag>
<description>Reserved space in bytes per volume. Always leave this much space free for non dfs use.
Such as /dir1:100B, /dir2:200MB, means dir1 reserves 100 bytes and dir2 reserves 200 MB.
</description>
</property>
<property>
<name>hdds.datanode.dir.du.reserved.percent</name>
<value/>
<tag>OZONE, CONTAINER, STORAGE, MANAGEMENT</tag>
<description>Percentage of volume that should be reserved. This space is left free for other usage.
The value should be between 0-1. Such as 0.1 which means 10% of volume space will be reserved.
</description>
</property>
<property>
<name>hdds.datanode.volume.choosing.policy</name>
<value/>
<tag>OZONE, CONTAINER, STORAGE, MANAGEMENT</tag>
<description>
The class name of the policy for choosing volumes in the list of
directories. Defaults to
org.apache.hadoop.ozone.container.common.volume.RoundRobinVolumeChoosingPolicy.
This volume choosing policy selects volumes in a round-robin order.
</description>
</property>
<property>
<name>dfs.container.ratis.enabled</name>
<value>false</value>
<tag>OZONE, MANAGEMENT, PIPELINE, RATIS</tag>
<description>Ozone supports different kinds of replication pipelines. Ratis
is one of
the replication pipeline supported by ozone.
</description>
</property>
<property>
<name>dfs.container.ratis.ipc</name>
<value>9858</value>
<tag>OZONE, CONTAINER, PIPELINE, RATIS</tag>
<description>The ipc port number of container for clients.</description>
</property>
<property>
<name>dfs.container.ratis.admin.port</name>
<value>9857</value>
<tag>OZONE, CONTAINER, PIPELINE, RATIS, MANAGEMENT</tag>
<description>The ipc port number of container for admin requests.</description>
</property>
<property>
<name>dfs.container.ratis.server.port</name>
<value>9856</value>
<tag>OZONE, CONTAINER, PIPELINE, RATIS, MANAGEMENT</tag>
<description>The ipc port number of container for server-server communication.</description>
</property>
<property>
<name>dfs.container.ratis.ipc.random.port</name>
<value>false</value>
<tag>OZONE,DEBUG</tag>
<description>Allocates a random free port for ozone ratis port for the
container. This
is used only while running unit tests.
</description>
</property>
<property>
<name>dfs.container.ratis.rpc.type</name>
<value>GRPC</value>
<tag>OZONE, RATIS, MANAGEMENT</tag>
<description>Ratis supports different kinds of transports like netty, GRPC,
Hadoop RPC
etc. This picks one of those for this cluster.
</description>
</property>
<property>
<name>dfs.ratis.snapshot.threshold</name>
<value>10000</value>
<tag>OZONE, RATIS</tag>
<description>Number of transactions after which a ratis snapshot should be
taken.
</description>
</property>
<property>
<name>dfs.container.ratis.statemachine.max.pending.apply-transactions</name>
<value>10000</value>
<tag>OZONE, RATIS</tag>
<description>Maximum number of pending apply transactions in a data
pipeline. The default value is kept same as default snapshot threshold
dfs.ratis.snapshot.threshold.
</description>
</property>
<property>
<name>dfs.container.ratis.num.write.chunk.threads.per.volume</name>
<value>10</value>
<tag>OZONE, RATIS, PERFORMANCE</tag>
<description>Maximum number of threads in the thread pool that Datanode
will use for writing replicated chunks.
This is a per configured locations!
(10 thread per disk by default).
</description>
</property>
<property>
<name>dfs.container.ratis.leader.pending.bytes.limit</name>
<value>1GB</value>
<tag>OZONE, RATIS, PERFORMANCE</tag>
<description>Limit on the total bytes of pending requests after which
leader starts rejecting requests from client.
</description>
</property>
<property>
<name>dfs.container.ratis.replication.level</name>
<value>MAJORITY</value>
<tag>OZONE, RATIS</tag>
<description>Replication level to be used by datanode for submitting a
container command to ratis. Available replication levels are ALL and
MAJORTIY, MAJORITY is used as the default replication level.
</description>
</property>
<property>
<name>dfs.container.ratis.num.container.op.executors</name>
<value>10</value>
<tag>OZONE, RATIS, PERFORMANCE</tag>
<description>Number of executors that will be used by Ratis to execute
container ops.(10 by default).
</description>
</property>
<property>
<name>dfs.container.ratis.segment.size</name>
<value>1MB</value>
<tag>OZONE, RATIS, PERFORMANCE</tag>
<description>The size of the raft segment used by Apache Ratis on datanodes.
(1 MB by default)
</description>
</property>
<property>
<name>dfs.container.ratis.segment.preallocated.size</name>
<value>16KB</value>
<tag>OZONE, RATIS, PERFORMANCE</tag>
<description>The size of the buffer which is preallocated for raft segment
used by Apache Ratis on datanodes.(16 KB by default)
</description>
</property>
<property>
<name>dfs.ratis.server.retry-cache.timeout.duration</name>
<value>600000ms</value>
<tag>OZONE, RATIS, MANAGEMENT</tag>
<description>Retry Cache entry timeout for ratis server.</description>
</property>
<property>
<name>dfs.ratis.leader.election.minimum.timeout.duration</name>
<value>5s</value>
<tag>OZONE, RATIS, MANAGEMENT</tag>
<description>The minimum timeout duration for ratis leader election.
Default is 5s.
</description>
</property>
<property>
<name>hdds.node.report.interval</name>
<value>60000ms</value>
<tag>OZONE, CONTAINER, MANAGEMENT</tag>
<description>Time interval of the datanode to send node report. Each
datanode periodically send node report to SCM. Unit could be
defined with postfix (ns,ms,s,m,h,d)</description>
</property>
<property>
<name>hdds.container.report.interval</name>
<value>60m</value>
<tag>OZONE, CONTAINER, MANAGEMENT</tag>
<description>Time interval of the datanode to send container report. Each
datanode periodically send container report to SCM. Unit could be
defined with postfix (ns,ms,s,m,h,d)</description>
</property>
<property>
<name>hdds.crl.status.report.interval</name>
<value>60000ms</value>
<tag>OZONE, SECURITY, MANAGEMENT</tag>
<description>Time interval of the datanode to send CRL status report. Each
datanode periodically sends CRL status report to SCM. Unit could be
defined with postfix (ns,ms,s,m,h,d)</description>
</property>
<property>
<name>hdds.pipeline.report.interval</name>
<value>60000ms</value>
<tag>OZONE, PIPELINE, MANAGEMENT</tag>
<description>Time interval of the datanode to send pipeline report. Each
datanode periodically send pipeline report to SCM. Unit could be
defined with postfix (ns,ms,s,m,h,d)</description>
</property>
<property>
<name>hdds.prometheus.endpoint.enabled</name>
<value>true</value>
<tag>OZONE, MANAGEMENT</tag>
<description>Enable prometheus compatible metric page on the HTTP
servers.
</description>
</property>
<property>
<name>hdds.profiler.endpoint.enabled</name>
<value>false</value>
<tag>OZONE, MANAGEMENT</tag>
<description>Enable /prof java profiler servlet page on HTTP server.
</description>
</property>
<!--Ozone Settings-->
<property>
<name>ozone.administrators</name>
<value/>
<tag>OZONE, SECURITY</tag>
<description>Ozone administrator users delimited by the comma.
If not set, only the user who launches an ozone service will be the admin
user. This property must be set if ozone services are started by different
users. Otherwise, the RPC layer will reject calls from other servers which
are started by users not in the list.
</description>
</property>
<property>
<name>ozone.administrators.groups</name>
<value/>
<tag>OZONE, SECURITY</tag>
<description>Ozone administrator groups delimited by the comma.
This is the list of groups who can access admin only information
from ozone.
It is enough to either have the name defined in ozone.administrators
or be directly or indirectly in a group defined in this property.
</description>
</property>
<property>
<name>ozone.block.deleting.container.limit.per.interval</name>
<value>10</value>
<tag>OZONE, PERFORMANCE, SCM</tag>
<description>A maximum number of containers to be scanned by block deleting
service per
time interval. The block deleting service spawns a thread to handle block
deletions in a container. This property is used to throttle the number of
threads spawned for block deletions.
</description>
</property>
<property>
<name>ozone.block.deleting.limit.per.task</name>
<value>1000</value>
<tag>OZONE, PERFORMANCE, SCM</tag>
<description>A maximum number of blocks to be deleted by block deleting
service per
time interval. This property is used to throttle the actual number of
block deletions on a data node per container.
</description>
</property>
<property>
<name>ozone.block.deleting.service.interval</name>
<value>1m</value>
<tag>OZONE, PERFORMANCE, SCM</tag>
<description>Time interval of the block deleting service.
The block deleting service runs on each datanode periodically and
deletes blocks queued for deletion. Unit could be defined with
postfix (ns,ms,s,m,h,d)
</description>
</property>
<property>
<name>ozone.block.deleting.service.timeout</name>
<value>300000ms</value>
<tag>OZONE, PERFORMANCE, SCM</tag>
<description>A timeout value of block deletion service. If this is set
greater than 0,
the service will stop waiting for the block deleting completion after this
time. If timeout happens to a large proportion of block deletion, this
needs to be increased with ozone.block.deleting.limit.per.task. This
setting supports multiple time unit suffixes as described in
dfs.heartbeat.interval. If no suffix is specified, then milliseconds is
assumed.
</description>
</property>
<property>
<name>ozone.block.deleting.service.workers</name>
<value>10</value>
<tag>OZONE, PERFORMANCE, SCM</tag>
<description>Number of workers executed of block deletion service. This
configuration should be set to greater than 0.
</description>
</property>
<property>
<name>ozone.UnsafeByteOperations.enabled</name>
<value>true</value>
<tag>OZONE, PERFORMANCE, CLIENT</tag>
<description>It specifies whether to use unsafe or safe buffer to byteString
copy.
</description>
</property>
<property>
<name>ozone.client.connection.timeout</name>
<value>5000ms</value>
<tag>OZONE, PERFORMANCE, CLIENT</tag>
<description>Connection timeout for Ozone client in milliseconds.
</description>
</property>
<property>
<name>ozone.client.socket.timeout</name>
<value>5000ms</value>
<tag>OZONE, CLIENT</tag>
<description>Socket timeout for Ozone client. Unit could be defined with
postfix (ns,ms,s,m,h,d)</description>
</property>
<property>
<name>ozone.key.deleting.limit.per.task</name>
<value>20000</value>
<tag>OM, PERFORMANCE</tag>
<description>
A maximum number of keys to be scanned by key deleting service
per time interval in OM. Those keys are sent to delete metadata and
generate transactions in SCM for next async deletion between SCM
and DataNode.
</description>
</property>
<property>
<name>ozone.om.service.ids</name>
<value/>
<tag>OM, HA</tag>
<description>
Comma-separated list of OM service Ids. This property allows the client
to figure out quorum of OzoneManager address.
</description>
</property>
<property>
<name>ozone.om.internal.service.id</name>
<value/>
<tag>OM, HA</tag>
<description>
Service ID of the Ozone Manager. If this is not set fall back to
ozone.om.service.ids to find the service ID it belongs to.
</description>
</property>
<property>
<name>ozone.om.nodes.EXAMPLEOMSERVICEID</name>
<value/>
<tag>OM, HA</tag>
<description>
Comma-separated list of OM node Ids for a given OM service ID (eg.
EXAMPLEOMSERVICEID). The OM service ID should be the value (one of the
values if there are multiple) set for the parameter ozone.om.service.ids.
Decommissioned nodes (represented by node Ids in
ozone.om.decommissioned.nodes config list) will be ignored and not
included in the OM HA setup even if added to this list.
Unique identifiers for each OM Node, delimited by commas. This will be
used by OzoneManagers in HA setup to determine all the OzoneManagers
belonging to the same OMservice in the cluster. For example, if you
used “omService1” as the OM service ID previously, and you wanted to
use “om1”, “om2” and "om3" as the individual IDs of the OzoneManagers,
you would configure a property ozone.om.nodes.omService1, and its value
"om1,om2,om3".
</description>
</property>
<property>
<name>ozone.om.decommissioned.nodes.EXAMPLEOMSERVICEID</name>
<value/>
<tag>OM, HA</tag>
<description>
Comma-separated list of OM node Ids which have been decommissioned. OMs
present in this list will not be included in the OM HA ring.
</description>
</property>
<property>
<name>ozone.om.node.id</name>
<value/>
<tag>OM, HA</tag>
<description>
The ID of this OM node. If the OM node ID is not configured it
is determined automatically by matching the local node's address
with the configured address.
If node ID is not deterministic from the configuration, then it is set
to default node id - om1.
</description>
</property>
<property>
<name>ozone.om.address</name>
<value>0.0.0.0:9862</value>
<tag>OM, REQUIRED</tag>
<description>
The address of the Ozone OM service. This allows clients to discover
the address of the OM.
</description>
</property>
<property>
<name>ozone.om.handler.count.key</name>
<value>100</value>
<tag>OM, PERFORMANCE</tag>
<description>
The number of RPC handler threads for OM service endpoints.
</description>
</property>
<property>
<name>ozone.om.http-address</name>
<value>0.0.0.0:9874</value>
<tag>OM, MANAGEMENT</tag>
<description>
The address and the base port where the OM web UI will listen on.
If the port is 0, then the server will start on a free port. However, it
is best to specify a well-known port, so it is easy to connect and see
the OM management UI.
</description>
</property>
<property>
<name>ozone.om.http-bind-host</name>
<value>0.0.0.0</value>
<tag>OM, MANAGEMENT</tag>
<description>
The actual address the OM web server will bind to. If this optional
the address is set, it overrides only the hostname portion of
ozone.om.http-address.
</description>
</property>
<property>
<name>ozone.om.http.enabled</name>
<value>true</value>
<tag>OM, MANAGEMENT</tag>
<description>
Property to enable or disable OM web user interface.
</description>
</property>
<property>
<name>ozone.om.https-address</name>
<value>0.0.0.0:9875</value>
<tag>OM, MANAGEMENT, SECURITY</tag>
<description>
The address and the base port where the OM web UI will listen
on using HTTPS.
If the port is 0 then the server will start on a free port.
</description>
</property>
<property>
<name>ozone.om.https-bind-host</name>
<value>0.0.0.0</value>
<tag>OM, MANAGEMENT, SECURITY</tag>
<description>
The actual address the OM web server will bind to using HTTPS.
If this optional address is set, it overrides only the hostname portion of
ozone.om.https-address.
</description>
</property>
<property>
<name>ozone.om.volume.listall.allowed</name>
<value>true</value>
<tag>OM, MANAGEMENT</tag>
<description>
Allows everyone to list all volumes when set to true. Defaults to true.
When set to false, non-admin users can only list the volumes they have
access to. Admins can always list all volumes.
</description>
</property>
<property>
<name>ozone.om.user.max.volume</name>
<value>1024</value>
<tag>OM, MANAGEMENT</tag>
<description>
The maximum number of volumes a user can have on a cluster.Increasing or
decreasing this number has no real impact on ozone cluster. This is
defined only for operational purposes. Only an administrator can create a
volume, once a volume is created there are no restrictions on the number
of buckets or keys inside each bucket a user can create.
</description>
</property>
<property>
<name>ozone.om.db.dirs</name>
<value/>
<tag>OZONE, OM, STORAGE, PERFORMANCE</tag>
<description>
Directory where the OzoneManager stores its metadata. This should
be specified as a single directory. If the directory does not
exist then the OM will attempt to create it.
If undefined, then the OM will log a warning and fallback to
ozone.metadata.dirs. This fallback approach is not recommended for
production environments.
</description>
</property>
<property>
<name>ozone.metadata.dirs</name>
<value/>
<tag>OZONE, OM, SCM, CONTAINER, STORAGE, REQUIRED</tag>
<description>
This setting is the fallback location for SCM, OM, Recon and DataNodes
to store their metadata. This setting may be used only in test/PoC
clusters to simplify configuration.
For production clusters or any time you care about performance, it is
recommended that ozone.om.db.dirs, ozone.scm.db.dirs and
dfs.container.ratis.datanode.storage.dir be configured separately.
</description>
</property>
<property>
<name>ozone.metastore.rocksdb.statistics</name>
<value>OFF</value>
<tag>OZONE, OM, SCM, STORAGE, PERFORMANCE</tag>
<description>
The statistics level of the rocksdb store. If you use any value from
org.rocksdb.StatsLevel (eg. ALL or EXCEPT_DETAILED_TIMERS), the rocksdb
statistics will be exposed over JMX bean with the choosed setting. Set
it to OFF to not initialize rocksdb statistics at all. Please note that
collection of statistics could have 5-10% performance penalty.
Check the rocksdb documentation for more details.
</description>
</property>
<property>
<name>ozone.scm.db.dirs</name>
<value/>
<tag>OZONE, SCM, STORAGE, PERFORMANCE</tag>
<description>
Directory where the StorageContainerManager stores its metadata.
This should be specified as a single directory. If the directory
does not exist then the SCM will attempt to create it.
If undefined, then the SCM will log a warning and fallback to
ozone.metadata.dirs. This fallback approach is not recommended for
production environments.
</description>
</property>
<property>
<name>ozone.scm.block.client.address</name>
<value/>
<tag>OZONE, SCM</tag>
<description>The address of the Ozone SCM block client service. If not
defined value of ozone.scm.client.address is used.
</description>
</property>
<property>
<name>ozone.scm.block.client.bind.host</name>
<value>0.0.0.0</value>
<tag>OZONE, SCM</tag>
<description>
The hostname or IP address used by the SCM block client
endpoint to bind.
</description>
</property>
<property>
<name>ozone.scm.block.client.port</name>
<value>9863</value>
<tag>OZONE, SCM</tag>
<description>
The port number of the Ozone SCM block client service.
</description>
</property>
<property>
<name>ozone.scm.block.deletion.max.retry</name>
<value>4096</value>
<tag>OZONE, SCM</tag>
<description>
SCM wraps up many blocks in a deletion transaction and sends that to data
node for physical deletion periodically. This property determines how many
times SCM is going to retry sending a deletion operation to the data node.
</description>
</property>
<property>
<name>ozone.scm.block.size</name>
<value>256MB</value>
<tag>OZONE, SCM</tag>
<description>
The default size of a scm block. This is maps to the default
Ozone block size.
</description>
</property>
<property>
<name>ozone.scm.sequence.id.batch.size</name>
<value>1000</value>
<tag>OZONE, SCM</tag>
<description>
SCM allocates sequence id in a batch way. This property determines how many
ids will be allocated in a single batch.
</description>
</property>
<property>
<name>ozone.scm.chunk.size</name>
<value>4MB</value>
<tag>OZONE, SCM, CONTAINER, PERFORMANCE</tag>
<description>
The chunk size for reading/writing chunk operations in bytes.
The chunk size defaults to 4MB. If the value configured is more than the
maximum size (32MB), it will be reset to the maximum size (32MB). This
maps to the network packet sizes and file write operations in the
client to datanode protocol.
When tuning this parameter, flow control window parameter should be
tuned accordingly. Refer to
hdds.ratis.raft.grpc.flow.control.window for more information.
</description>
</property>
<property>
<name>ozone.chunk.read.buffer.default.size</name>
<value>64KB</value>
<tag>OZONE, SCM, CONTAINER, PERFORMANCE</tag>
<description>
The default read buffer size during read chunk operations when checksum
is disabled. Chunk data will be cached in buffers of this capacity.
For chunk data with checksum, the read buffer size will be the
same as the number of bytes per checksum
(ozone.client.bytes.per.checksum) corresponding to the chunk.
</description>
</property>
<property>
<name>ozone.scm.container.layout</name>
<value>FILE_PER_BLOCK</value>
<tag>OZONE, SCM, CONTAINER, PERFORMANCE</tag>
<description>
Container layout defines how chunks, blocks and containers are stored on disk.
Each chunk is stored separately with FILE_PER_CHUNK. All chunks of a
block are stored in the same file with FILE_PER_BLOCK. The default is
FILE_PER_BLOCK.
</description>
</property>
<property>
<name>ozone.scm.client.address</name>
<value/>
<tag>OZONE, SCM, REQUIRED</tag>
<description>
The address of the Ozone SCM client service. This is a required setting.
It is a string in the host:port format. The port number is optional
and defaults to 9860.
</description>
</property>
<property>
<name>ozone.scm.client.bind.host</name>
<value>0.0.0.0</value>
<tag>OZONE, SCM, MANAGEMENT</tag>
<description>The hostname or IP address used by the SCM client endpoint to
bind.
This setting is used by the SCM only and never used by clients.
The setting can be useful in multi-homed setups to restrict the
availability of the SCM client service to a specific interface.
The default is appropriate for most clusters.
</description>
</property>
<property>
<name>ozone.scm.client.port</name>
<value>9860</value>
<tag>OZONE, SCM, MANAGEMENT</tag>
<description>The port number of the Ozone SCM client service.</description>
</property>
<property>
<name>ozone.scm.keyvalue.container.deletion-choosing.policy</name>
<value>
org.apache.hadoop.ozone.container.common.impl.TopNOrderedContainerDeletionChoosingPolicy
</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The policy used for choosing desired keyvalue containers for block deletion.
Datanode selects some containers to process block deletion
in a certain interval defined by ozone.block.deleting.service.interval.
The number of containers to process in each interval is defined
by ozone.block.deleting.container.limit.per.interval. This property is
used to configure the policy applied while selecting containers.
There are two policies supporting now:
RandomContainerDeletionChoosingPolicy and
TopNOrderedContainerDeletionChoosingPolicy.
org.apache.hadoop.ozone.container.common.impl.RandomContainerDeletionChoosingPolicy
implements a simply random policy that to return a random list of
containers.
org.apache.hadoop.ozone.container.common.impl.TopNOrderedContainerDeletionChoosingPolicy
implements a policy that choosing top count number of containers in a
pending-deletion-blocks's num
based descending order.
</description>
</property>
<property>
<name>ozone.scm.container.placement.impl</name>
<value>
org.apache.hadoop.hdds.scm.container.placement.algorithms.SCMContainerPlacementRandom
</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The full name of class which implements
org.apache.hadoop.hdds.scm.PlacementPolicy.
The class decides which datanode will be used to host the container replica. If not set,
org.apache.hadoop.hdds.scm.container.placement.algorithms.SCMContainerPlacementRandom will be used as default
value.
</description>
</property>
<property>
<name>ozone.scm.container.placement.ec.impl</name>
<value>
org.apache.hadoop.hdds.scm.container.placement.algorithms.SCMContainerPlacementRackScatter
</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The full name of class which implements
org.apache.hadoop.hdds.scm.PlacementPolicy.
The class decides which datanode will be used to host the container replica in EC mode. If not set,
org.apache.hadoop.hdds.scm.container.placement.algorithms.SCMContainerPlacementRandom will be used as default
value.
</description>
</property>
<property>
<name>ozone.scm.pipeline.owner.container.count</name>
<value>3</value>
<tag>OZONE, SCM, PIPELINE</tag>
<description>Number of containers per owner per disk in a pipeline.
</description>
</property>
<property>
<name>ozone.scm.pipeline.per.metadata.disk</name>
<value>2</value>
<tag>OZONE, SCM, PIPELINE</tag>
<description>Number of pipelines to be created per raft log disk.
</description>
</property>
<property>
<name>ozone.scm.datanode.pipeline.limit</name>
<value>2</value>
<tag>OZONE, SCM, PIPELINE</tag>
<description>Max number of pipelines per datanode can be engaged in.
Setting the value to 0 means the pipeline limit per dn will be determined
by the no of metadata volumes reported per dn.
</description>
</property>
<property>
<name>ozone.scm.datanode.disallow.same.peers</name>
<value>false</value>
<tag>OZONE, SCM, PIPELINE</tag>
<description>Disallows same set of datanodes to participate in multiple
pipelines when set to true. Default is set to false.
</description>
</property>
<property>
<name>ozone.scm.ratis.pipeline.limit</name>
<value>0</value>
<tag>OZONE, SCM, PIPELINE</tag>
<description>Upper limit for how many pipelines can be OPEN in SCM.
0 as default means there is no limit. Otherwise, the number is the limit
of max amount of pipelines which are OPEN.
</description>
</property>
<property>
<name>ozone.scm.pipeline.allocated.timeout</name>
<value>5m</value>
<tag>OZONE, SCM, PIPELINE</tag>
<description>
Timeout for every pipeline to stay in ALLOCATED stage. When pipeline is created,
it should be at OPEN stage once pipeline report is successfully received by SCM.
If a pipeline stays at ALLOCATED longer than the specified period of time,
it should be scrubbed so that new pipeline can be created.
This timeout is for how long pipeline can stay at ALLOCATED
stage until it gets scrubbed.
</description>
</property>
<property>
<name>ozone.scm.pipeline.leader-choose.policy</name>
<value>
org.apache.hadoop.hdds.scm.pipeline.leader.choose.algorithms.MinLeaderCountChoosePolicy
</value>
<tag>OZONE, SCM, PIPELINE</tag>
<description>
The policy used for choosing desired leader for pipeline creation.
There are two policies supporting now: DefaultLeaderChoosePolicy, MinLeaderCountChoosePolicy.
org.apache.hadoop.hdds.scm.pipeline.leader.choose.algorithms.DefaultLeaderChoosePolicy
implements a policy that choose leader without depending on priority.
org.apache.hadoop.hdds.scm.pipeline.leader.choose.algorithms.MinLeaderCountChoosePolicy
implements a policy that choose leader which has the minimum exist leader count.
In the future, we need to add policies which consider:
1. resource, the datanode with the most abundant cpu and memory can be made the leader
2. topology, the datanode nearest to the client can be made the leader
</description>
</property>
<property>
<name>ozone.scm.container.size</name>
<value>5GB</value>
<tag>OZONE, PERFORMANCE, MANAGEMENT</tag>
<description>
Default container size used by Ozone.
There are two considerations while picking this number. The speed at which
a container can be replicated, determined by the network speed and the
metadata that each container generates. So selecting a large number
creates less SCM metadata, but recovery time will be more. 5GB is a number
that maps to quick replication times in gigabit networks, but still
balances the amount of metadata.
</description>
</property>
<property>
<name>ozone.scm.datanode.address</name>
<value/>
<tag>OZONE, MANAGEMENT</tag>
<description>
The address of the Ozone SCM service used for internal
communication between the DataNodes and the SCM.
It is a string in the host:port format. The port number is optional
and defaults to 9861.
This setting is optional. If unspecified then the hostname portion
is picked from the ozone.scm.client.address setting and the
default service port of 9861 is chosen.
</description>
</property>
<property>
<name>ozone.scm.datanode.bind.host</name>
<value/>
<tag>OZONE, MANAGEMENT</tag>
<description>
The hostname or IP address used by the SCM service endpoint to
bind.
</description>
</property>
<property>
<name>ozone.scm.datanode.id.dir</name>
<value/>
<tag>OZONE, MANAGEMENT</tag>
<description>The path that datanodes will use to store the datanode ID.
If this value is not set, then datanode ID is created under the
metadata directory.
</description>
</property>
<property>
<name>ozone.scm.datanode.port</name>
<value>9861</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The port number of the Ozone SCM service.
</description>
</property>
<property>
<name>ozone.scm.dead.node.interval</name>
<value>10m</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The interval between heartbeats before a node is tagged as dead.
</description>
</property>
<property>
<name>ozone.scm.handler.count.key</name>
<value>100</value>
<tag>OZONE, MANAGEMENT, PERFORMANCE</tag>
<description>
The number of RPC handler threads for each SCM service
endpoint.
The default is appropriate for small clusters (tens of nodes).
Set a value that is appropriate for the cluster size. Generally, HDFS
recommends RPC handler count is set to 20 * log2(Cluster Size) with an
upper limit of 200. However, SCM will not have the same amount of
traffic as Namenode, so a value much smaller than that will work well too.
</description>
</property>
<property>
<name>hdds.heartbeat.interval</name>
<value>30s</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The heartbeat interval from a data node to SCM. Yes,
it is not three but 30, since most data nodes will heart beating via Ratis
heartbeats. If a client is not able to talk to a data node, it will notify
OM/SCM eventually. So a 30 second HB seems to work. This assumes that
replication strategy used is Ratis if not, this value should be set to
something smaller like 3 seconds.
ozone.scm.pipeline.close.timeout should also be adjusted accordingly,
if the default value for this config is not used.
</description>
</property>
<property>
<name>hdds.recon.heartbeat.interval</name>
<value>60s</value>
<tag>OZONE, MANAGEMENT, RECON</tag>
<description>
The heartbeat interval from a Datanode to Recon.
</description>
</property>
<property>
<name>ozone.scm.heartbeat.log.warn.interval.count</name>
<value>10</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
Defines how frequently we will log the missing of a heartbeat to SCM.
For example in the default case, we will write a warning message for each
ten consecutive heartbeats that we miss to SCM. This helps in reducing
clutter in a data node log, but trade off is that logs will have less of
this statement.
</description>
</property>
<property>
<name>ozone.scm.heartbeat.rpc-timeout</name>
<value>5s</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
Timeout value for the RPC from Datanode to SCM.
</description>
</property>
<property>
<name>ozone.scm.heartbeat.rpc-retry-count</name>
<value>15</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
Retry count for the RPC from Datanode to SCM. The rpc-retry-interval
is 1s by default. Make sure rpc-retry-count * (rpc-timeout +
rpc-retry-interval) is less than hdds.heartbeat.interval.
</description>
</property>
<property>
<name>ozone.scm.heartbeat.rpc-retry-interval</name>
<value>1s</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
Retry interval for the RPC from Datanode to SCM.
Make sure rpc-retry-count * (rpc-timeout + rpc-retry-interval)
is less than hdds.heartbeat.interval.
</description>
</property>
<property>
<name>ozone.scm.heartbeat.thread.interval</name>
<value>3s</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
When a heartbeat from the data node arrives on SCM, It is queued for
processing with the time stamp of when the heartbeat arrived. There is a
heartbeat processing thread inside SCM that runs at a specified interval.
This value controls how frequently this thread is run.
There are some assumptions build into SCM such as this value should allow
the heartbeat processing thread to run at least three times more
frequently than heartbeats and at least five times more than stale node
detection time. If you specify a wrong value, SCM will gracefully refuse
to run. For more info look at the node manager tests in SCM.
In short, you don't need to change this.
</description>
</property>
<property>
<name>ozone.scm.http-address</name>
<value>0.0.0.0:9876</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The address and the base port where the SCM web ui will listen on.
If the port is 0 then the server will start on a free port.
</description>
</property>
<property>
<name>ozone.scm.http-bind-host</name>
<value>0.0.0.0</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The actual address the SCM web server will bind to. If this
optional address is set, it overrides only the hostname portion of
ozone.scm.http-address.
</description>
</property>
<property>
<name>ozone.scm.http.enabled</name>
<value>true</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
Property to enable or disable SCM web ui.
</description>
</property>
<property>
<name>ozone.scm.https-address</name>
<value>0.0.0.0:9877</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The address and the base port where the SCM web UI will listen
on using HTTPS.
If the port is 0 then the server will start on a free port.
</description>
</property>
<property>
<name>ozone.scm.https-bind-host</name>
<value>0.0.0.0</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The actual address the SCM web server will bind to using HTTPS.
If this optional address is set, it overrides only the hostname portion of
ozone.scm.https-address.
</description>
</property>
<property>
<name>ozone.scm.names</name>
<value/>
<tag>OZONE, REQUIRED</tag>
<description>
The value of this property is a set of DNS | DNS:PORT | IP
Address | IP:PORT. Written as a comma separated string. e.g. scm1,
scm2:8020, 7.7.7.7:7777.
This property allows datanodes to discover where SCM is, so that
datanodes can send heartbeat to SCM.
</description>
</property>
<property>
<name>ozone.scm.stale.node.interval</name>
<value>5m</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The interval for stale node flagging. Please
see ozone.scm.heartbeat.thread.interval before changing this value.
</description>
</property>
<property>
<name>ozone.trace.enabled</name>
<value>false</value>
<tag>OZONE, DEBUG</tag>
<description>
Setting this flag to true dumps the HTTP request/ response in
the logs. Very useful when debugging REST protocol.
</description>
</property>
<property>
<name>ozone.key.preallocation.max.blocks</name>
<value>64</value>
<tag>OZONE, OM, PERFORMANCE</tag>
<description>
While allocating blocks from OM, this configuration limits the maximum
number of blocks being allocated. This configuration ensures that the
allocated block response do not exceed rpc payload limit. If client needs
more space for the write, separate block allocation requests will be made.
</description>
</property>
<property>
<name>ozone.client.list.cache</name>
<value>1000</value>
<tag>OZONE, PERFORMANCE</tag>
<description>
Configuration property to configure the cache size of client list calls.
</description>
</property>
<property>
<name>ozone.server.default.replication</name>
<value>3</value>
<tag>OZONE</tag>
<description>
Default replication value. The actual number of replications can be
specified when writing the key. The default is used if replication
is not specified when creating key or no default replication set at
bucket. Supported values:
For Standalone: 1
For Ratis: 3
For Erasure Coding(EC) supported format:
{ECCodec}-{DataBlocks}-{ParityBlocks}-{ChunkSize}
ECCodec: Codec for encoding stripe. Supported values : XOR, RS (Reed Solomon)
DataBlocks: Number of data blocks in a stripe.
ParityBlocks: Number of parity blocks in a stripe.
ChunkSize: Chunk size in bytes. E.g. 1024k, 2048k etc.
Supported combinations of {DataBlocks}-{ParityBlocks} : 3-2, 6-3, 10-4
</description>
</property>
<property>
<name>ozone.server.default.replication.type</name>
<value>RATIS</value>
<tag>OZONE</tag>
<description>
Default replication type to be used while writing key into ozone. The
value can be specified when writing the key, default is used when
nothing is specified when creating key or no default value set at bucket.
Supported values: RATIS, STAND_ALONE, CHAINED and EC.
</description>
</property>
<property>
<name>ozone.client.bucket.replication.config.refresh.time.ms</name>
<value>30000</value>
<tag>OZONE</tag>
<description>
Default time period to refresh the bucket replication config in o3fs
clients. Until the bucket replication config refreshed, client will
continue to use existing replication config irrespective of whether bucket
replication config updated at OM or not.
</description>
</property>
<property>
<name>hdds.container.close.threshold</name>
<value>0.9f</value>
<tag>OZONE, DATANODE</tag>
<description>
This determines the threshold to be used for closing a container.
When the container used percentage reaches this threshold,
the container will be closed. Value should be a positive, non-zero
percentage in float notation (X.Yf), with 1.0f meaning 100%.
</description>
</property>
<property>
<name>ozone.rest.client.http.connection.max</name>
<value>100</value>
<tag>OZONE, CLIENT</tag>
<description>
This defines the overall connection limit for the connection pool used in
RestClient.
</description>
</property>
<property>
<name>ozone.rest.client.http.connection.per-route.max</name>
<value>20</value>
<tag>OZONE, CLIENT</tag>
<description>
This defines the connection limit per one HTTP route/host. Total max
connection is limited by ozone.rest.client.http.connection.max property.
</description>
</property>
<property>
<name>ozone.om.open.key.cleanup.service.interval</name>
<value>24h</value>
<tag>OZONE, OM, PERFORMANCE</tag>
<description>
A background job that periodically checks open key entries and marks
expired open keys for deletion. This entry controls the interval of this
cleanup check. Unit could be defined with postfix (ns,ms,s,m,h,d)
</description>
</property>
<property>
<name>ozone.om.open.key.cleanup.service.timeout</name>
<value>300s</value>
<tag>OZONE, OM, PERFORMANCE</tag>
<description>A timeout value of open key cleanup service. If this is set
greater than 0, the service will stop waiting for the open key deleting
completion after this time. If timeout happens to a large proportion of
open key deletion, this value needs to be increased or
ozone.om.open.key.cleanup.limit.per.task should be decreased.
Unit could be defined with postfix (ns,ms,s,m,h,d)
</description>
</property>
<property>
<name>ozone.om.open.key.expire.threshold</name>
<value>7d</value>
<tag>OZONE, OM, PERFORMANCE</tag>
<description>
Controls how long an open key operation is considered active. Specifically, if a key
has been open longer than the value of this config entry, that open key is considered as
expired (e.g. due to client crash). Unit could be defined with postfix (ns,ms,s,m,h,d)
</description>
</property>
<property>
<name>ozone.om.open.key.cleanup.limit.per.task</name>
<value>1000</value>
<tag>OZONE, OM, PERFORMANCE</tag>
<description>
The maximum number of open keys to be identified as expired and marked
for deletion by one run of the open key cleanup service on the OM.
This property is used to throttle the actual number of open key deletions
on the OM.
</description>
</property>
<property>
<name>hadoop.tags.custom</name>
<value>OZONE,MANAGEMENT,SECURITY,PERFORMANCE,DEBUG,CLIENT,SERVER,OM,SCM,
CRITICAL,RATIS,CONTAINER,REQUIRED,REST,STORAGE,PIPELINE,STANDALONE,S3GATEWAY,RECON</value>
</property>
<property>
<name>ozone.tags.system</name>
<value>OZONE,MANAGEMENT,SECURITY,PERFORMANCE,DEBUG,CLIENT,SERVER,OM,SCM,
CRITICAL,RATIS,CONTAINER,REQUIRED,REST,STORAGE,PIPELINE,STANDALONE,S3GATEWAY,TOKEN,TLS,RECON</value>
</property>
<property>
<name>hdds.rest.rest-csrf.enabled</name>
<value>false</value>
<description>
If true, then enables Object Store REST server protection against
cross-site request forgery (CSRF).
</description>
</property>
<property>
<name>hdds.rest.http-address</name>
<value>0.0.0.0:9880</value>
<description>The http address of Object Store REST server inside the
datanode.</description>
</property>
<property>
<name>hdds.rest.netty.high.watermark</name>
<value>65535</value>
<description>
High watermark configuration to Netty for Object Store REST server.
</description>
</property>
<property>
<name>hdds.rest.netty.low.watermark</name>
<value>32768</value>
<description>
Low watermark configuration to Netty for Object Store REST server.
</description>
</property>
<property>
<name>hdds.datanode.plugins</name>
<value/>
<description>
Comma-separated list of HDDS datanode plug-ins to be activated when
HDDS service starts as part of datanode.
</description>
</property>
<property>
<name>hdds.datanode.storage.utilization.warning.threshold</name>
<value>0.75</value>
<tag>OZONE, SCM, MANAGEMENT</tag>
<description>
If a datanode overall storage utilization exceeds more than this
value, a warning will be logged while processing the nodeReport in SCM.
</description>
</property>
<property>
<name>hdds.datanode.storage.utilization.critical.threshold</name>
<value>0.95</value>
<tag>OZONE, SCM, MANAGEMENT</tag>
<description>
If a datanode overall storage utilization exceeds more than this
value, the datanode will be marked out of space.
</description>
</property>
<property>
<name>hdds.datanode.metadata.rocksdb.cache.size</name>
<value>64MB</value>
<tag>OZONE, DATANODE, MANAGEMENT</tag>
<description>
Size of the block metadata cache shared among RocksDB instances on each
datanode. All containers on a datanode will share this cache.
</description>
</property>
<property>
<name>hdds.command.status.report.interval</name>
<value>30s</value>
<tag>OZONE, DATANODE, MANAGEMENT</tag>
<description>Time interval of the datanode to send status of commands
executed since last report. Unit could be defined with
postfix (ns,ms,s,m,h,d)</description>
</property>
<property>
<name>ozone.scm.pipeline.destroy.timeout</name>
<value>66s</value>
<tag>OZONE, SCM, PIPELINE</tag>
<description>
Once a pipeline is closed, SCM should wait for the above configured time
before destroying a pipeline.
</description>
</property>
<property>
<name>ozone.scm.pipeline.creation.interval</name>
<value>120s</value>
<tag>OZONE, SCM, PIPELINE</tag>
<description>
SCM schedules a fixed interval job using the configured interval to
create pipelines.
</description>
</property>
<property>
<name>ozone.scm.pipeline.scrub.interval</name>
<value>5m</value>
<tag>OZONE, SCM, PIPELINE</tag>
<description>
SCM schedules a fixed interval job using the configured interval to
scrub pipelines.
</description>
</property>
<property>
<name>ozone.scm.expired.container.replica.op.scrub.interval</name>
<value>5m</value>
<tag>OZONE, SCM, CONTAINER</tag>
<description>
SCM schedules a fixed interval job using the configured interval to
scrub expired container replica operation.
</description>
</property>
<property>
<name>ozone.scm.expired.container.replica.op.time.out</name>
<value>30m</value>
<tag>OZONE, SCM, CONTAINER</tag>
<description>
Timeout for the container replica operations(ADD/DELETE).After this
timeout the command will be retied
</description>
</property>
<property>
<name>ozone.scm.pipeline.creation.auto.factor.one</name>
<value>true</value>
<tag>OZONE, SCM, PIPELINE</tag>
<description>
If enabled, SCM will auto create RATIS factor ONE pipeline.
</description>
</property>
<property>
<name>hdds.scm.safemode.threshold.pct</name>
<value>0.99</value>
<tag>HDDS,SCM,OPERATION</tag>
<description> % of containers which should have at least one
reported replica before SCM comes out of safe mode.
</description>
</property>
<property>
<name>hdds.scm.wait.time.after.safemode.exit</name>
<value>5m</value>
<tag>HDDS,SCM,OPERATION</tag>
<description> After exiting safemode, wait for configured interval of
time to start replication monitor and cleanup activities of unhealthy
pipelines.
</description>
</property>
<property>
<name>hdds.scm.safemode.enabled</name>
<value>true</value>
<tag>HDDS,SCM,OPERATION</tag>
<description>Boolean value to enable or disable SCM safe mode.
</description>
</property>
<property>
<name>hdds.scm.safemode.min.datanode</name>
<value>1</value>
<tag>HDDS,SCM,OPERATION</tag>
<description>Minimum DataNodes which should be registered to get SCM out of
safe mode.
</description>
</property>
<property>
<name>hdds.scm.safemode.pipeline-availability.check</name>
<value>true</value>
<tag>HDDS,SCM,OPERATION</tag>
<description>
Boolean value to enable pipeline availability check during SCM safe mode.
</description>
</property>
<property>
<name>hdds.scm.safemode.healthy.pipeline.pct</name>
<value>0.10</value>
<tag>HDDS,SCM,OPERATION</tag>
<description>
Percentage of healthy pipelines, where all 3 datanodes are reported in the
pipeline.
</description>
</property>
<property>
<name>hdds.scm.safemode.atleast.one.node.reported.pipeline.pct</name>
<value>0.90</value>
<tag>HDDS,SCM,OPERATION</tag>
<description>
Percentage of pipelines, where at least one datanode is reported in the
pipeline.
</description>
</property>
<property>
<name>hdds.container.action.max.limit</name>
<value>20</value>
<tag>DATANODE</tag>
<description>
Maximum number of Container Actions sent by the datanode to SCM in a
single heartbeat.
</description>
</property>
<property>
<name>hdds.pipeline.action.max.limit</name>
<value>20</value>
<tag>DATANODE</tag>
<description>
Maximum number of Pipeline Actions sent by the datanode to SCM in a
single heartbeat.
</description>
</property>
<property>
<name>hdds.scm.watcher.timeout</name>
<value>10m</value>
<tag>OZONE, SCM, MANAGEMENT</tag>
<description>
Timeout for the watchers of the HDDS SCM CommandWatchers. After this
duration the Copy/Delete container commands will be sent again to the
datanode unless the datanode confirms the completion.
</description>
</property>
<property>
<name>hdds.db.profile</name>
<value>DISK</value>
<tag>OZONE, OM, PERFORMANCE</tag>
<description>This property allows user to pick a configuration
that tunes the RocksDB settings for the hardware it is running
on. Right now, we have SSD and DISK as profile options.</description>
</property>
<property>
<name>hdds.datanode.replication.work.dir</name>
<tag>DATANODE</tag>
<description>Temporary which is used during the container replication
betweeen datanodes. Should have enough space to store multiple container
(in compressed format), but doesn't require fast io access such as SSD.
</description>
</property>
<property>
<name>hdds.scm.safemode.pipeline.creation</name>
<value>true</value>
<tag>HDDS,SCM,OPERATION</tag>
<description>
Boolean value to enable background pipeline creation in SCM safe mode.
</description>
</property>
<property>
<name>hdds.scm.kerberos.keytab.file</name>
<value>/etc/security/keytabs/SCM.keytab</value>
<tag>SCM, SECURITY, KERBEROS</tag>
<description> The keytab file used by SCM daemon to login as its service principal.
</description>
</property>
<property>
<name>hdds.scm.kerberos.principal</name>
<value>SCM/_HOST@REALM</value>
<tag>SCM, SECURITY, KERBEROS</tag>
<description>The SCM service principal. e.g. scm/_HOST@REALM.COM</description>
</property>
<property>
<name>hdds.scm.http.auth.kerberos.principal</name>
<value>HTTP/_HOST@REALM</value>
<tag>SCM, SECURITY, KERBEROS</tag>
<description>
SCM http server service principal if SPNEGO is enabled for SCM http server.
</description>
</property>
<property>
<name>hdds.scm.http.auth.kerberos.keytab</name>
<value>/etc/security/keytabs/HTTP.keytab</value>
<tag>SCM, SECURITY, KERBEROS</tag>
<description>
The keytab file used by SCM http server to login as its service
principal if SPNEGO is enabled for SCM http server.
</description>
</property>
<property>
<name>ozone.s3g.volume.name</name>
<value>s3v</value>
<tag>OZONE, S3GATEWAY</tag>
<description>
The volume name to access through the s3gateway.
</description>
</property>
<property>
<name>ozone.s3g.domain.name</name>
<value/>
<tag>OZONE, S3GATEWAY</tag>
<description>List of Ozone S3Gateway domain names. If multiple
domain names to be provided, they should be a "," separated.
This parameter is only required when virtual host style pattern is
followed.</description>
</property>
<property>
<name>ozone.s3g.http-address</name>
<value>0.0.0.0:9878</value>
<tag>OZONE, S3GATEWAY</tag>
<description>The address and the base port where the Ozone S3Gateway
Server will
listen on.</description>
</property>
<property>
<name>ozone.s3g.http-bind-host</name>
<value>0.0.0.0</value>
<tag>OZONE, S3GATEWAY</tag>
<description>The actual address the HTTP server will bind to. If this optional address
is set, it overrides only the hostname portion of ozone.s3g.http-address.
This is useful for making the Ozone S3Gateway HTTP server listen on all
interfaces by setting it to 0.0.0.0.</description>
</property>
<property>
<name>ozone.s3g.http.enabled</name>
<value>true</value>
<tag>OZONE, S3GATEWAY</tag>
<description>The boolean which enables the Ozone S3Gateway server
.</description>
</property>
<property>
<name>ozone.s3g.https-address</name>
<value/>
<tag>OZONE, S3GATEWAY</tag>
<description>Ozone S3Gateway serverHTTPS server address and port
.</description>
</property>
<property>
<name>ozone.s3g.https-bind-host</name>
<value/>
<tag>OZONE, S3GATEWAY</tag>
<description>The actual address the HTTPS server will bind to. If this optional address
is set, it overrides only the hostname portion of ozone.s3g.https-address.
This is useful for making the Ozone S3Gateway HTTPS server listen on all
interfaces by setting it to 0.0.0.0.</description>
</property>
<property>
<name>ozone.s3g.http.auth.kerberos.principal</name>
<value>HTTP/_HOST@REALM</value>
<tag>OZONE, S3GATEWAY, SECURITY, KERBEROS</tag>
<description>The server principal used by Ozone S3Gateway server. This is
typically set to
HTTP/_HOST@REALM.TLD The SPNEGO server principal begins with the prefix
HTTP/ by convention.</description>
</property>
<property>
<name>ozone.s3g.http.auth.kerberos.keytab</name>
<value>/etc/security/keytabs/HTTP.keytab</value>
<tag>OZONE, S3GATEWAY, SECURITY, KERBEROS</tag>
<description>The keytab file used by the S3Gateway server to login as its
service principal. </description>
</property>
<property>
<name>ozone.om.save.metrics.interval</name>
<value>5m</value>
<tag>OZONE, OM</tag>
<description>Time interval used to store the omMetrics in to a
file. Background thread periodically stores the OM metrics in to a
file. Unit could be defined with postfix (ns,ms,s,m,h,d)
</description>
</property>
<property>
<name>ozone.security.enabled</name>
<value>false</value>
<tag>OZONE, SECURITY, KERBEROS</tag>
<description>True if security is enabled for ozone. When this property is
true, hadoop.security.authentication should be Kerberos.
</description>
</property>
<property>
<name>ozone.security.http.kerberos.enabled</name>
<value>false</value>
<tag>OZONE, SECURITY, KERBEROS</tag>
<description>True if Kerberos authentication for Ozone HTTP web consoles
is enabled using the SPNEGO protocol. When this property is
true, hadoop.security.authentication should be Kerberos and
ozone.security.enabled should be set to true.
</description>
</property>
<property>
<name>ozone.http.filter.initializers</name>
<value/>
<tag>OZONE, SECURITY, KERBEROS</tag>
<description>Set to org.apache.hadoop.security.AuthenticationFilterInitializer
to enable Kerberos authentication for Ozone HTTP web consoles
is enabled using the SPNEGO protocol. When this property is
set, ozone.security.http.kerberos.enabled should be set to true.
</description>
</property>
<property>
<name>ozone.client.read.timeout</name>
<value>30s</value>
<tag>OZONE, CLIENT, MANAGEMENT</tag>
<description>
Timeout for ozone grpc client during read.
</description>
</property>
<property>
<name>ozone.om.unflushed.transaction.max.count</name>
<value>10000</value>
<tag>OZONE, OM</tag>
<description>the unflushed transactions here are those requests that have been
applied to OM state machine but not been flushed to OM rocksdb. when OM meets
high concurrency-pressure and flushing is not fast enough, too many pending
requests will be hold in memory and will lead to long GC of OM, which will slow
down flushing further. there are some cases that flushing is slow, for example,
1 rocksdb is on a HDD, which has poor IO performance than SSD.
2 a big compaction is happening internally in rocksdb and write stall of
rocksdb happens.
3 long GC, which may caused by other factors.
the property is to limit the max count of unflushed transactions, so that the
maximum memory occupied by unflushed transactions is limited.
</description>
</property>
<property>
<name>ozone.om.lock.fair</name>
<value>false</value>
<description>If this is true, the Ozone Manager lock will be used in Fair
mode, which will schedule threads in the order received/queued. If this is
false, uses non-fair ordering. See
java.util.concurrent.locks.ReentrantReadWriteLock
for more information on fair/non-fair locks.
</description>
</property>
<property>
<name>ozone.om.ratis.enable</name>
<value>true</value>
<tag>OZONE, OM, RATIS, MANAGEMENT</tag>
<description>Property to enable or disable Ratis server on OM.
Please note - this is a temporary property to disable OM Ratis server.
</description>
</property>
<property>
<name>ozone.om.ratis.port</name>
<value>9872</value>
<tag>OZONE, OM, RATIS</tag>
<description>
The port number of the OzoneManager's Ratis server.
</description>
</property>
<property>
<name>ozone.om.ratis.rpc.type</name>
<value>GRPC</value>
<tag>OZONE, OM, RATIS, MANAGEMENT</tag>
<description>Ratis supports different kinds of transports like netty, GRPC,
Hadoop RPC etc. This picks one of those for this cluster.
</description>
</property>
<property>
<name>ozone.om.ratis.storage.dir</name>
<value/>
<tag>OZONE, OM, STORAGE, MANAGEMENT, RATIS</tag>
<description>This directory is used for storing OM's Ratis metadata like
logs. If this is not set then default metadata dirs is used. A warning
will be logged if this not set. Ideally, this should be mapped to a
fast disk like an SSD.
If undefined, OM ratis storage dir will fallback to ozone.metadata.dirs.
This fallback approach is not recommended for production environments.
</description>
</property>
<property>
<name>ozone.om.ratis.segment.size</name>
<value>4MB</value>
<tag>OZONE, OM, RATIS, PERFORMANCE</tag>
<description>The size of the raft segment used by Apache Ratis on OM.
(4 MB by default)
</description>
</property>
<property>
<name>ozone.om.ratis.segment.preallocated.size</name>
<value>4MB</value>
<tag>OZONE, OM, RATIS, PERFORMANCE</tag>
<description>The size of the buffer which is preallocated for raft segment
used by Apache Ratis on OM.(4 MB by default)
</description>
</property>
<property>
<name>ozone.om.ratis.log.appender.queue.num-elements</name>
<value>1024</value>
<tag>OZONE, DEBUG, OM, RATIS</tag>
<description>Number of operation pending with Raft's Log Worker.
</description>
</property>
<property>
<name>ozone.om.ratis.log.appender.queue.byte-limit</name>
<value>32MB</value>
<tag>OZONE, DEBUG, OM, RATIS</tag>
<description>Byte limit for Raft's Log Worker queue.
</description>
</property>
<property>
<name>ozone.om.ratis.log.purge.gap</name>
<value>1000000</value>
<tag>OZONE, OM, RATIS</tag>
<description>The minimum gap between log indices for Raft server to purge
its log segments after taking snapshot.
</description>
</property>
<property>
<name>ozone.om.ratis.server.request.timeout</name>
<value>3s</value>
<tag>OZONE, OM, RATIS, MANAGEMENT</tag>
<description>The timeout duration for OM's ratis server request .</description>
</property>
<property>
<name>ozone.om.ratis.server.retry.cache.timeout</name>
<value>600000ms</value>
<tag>OZONE, OM, RATIS, MANAGEMENT</tag>
<description>Retry Cache entry timeout for OM's ratis server.</description>
</property>
<property>
<name>ozone.om.ratis.minimum.timeout</name>
<value>5s</value>
<tag>OZONE, OM, RATIS, MANAGEMENT</tag>
<description>The minimum timeout duration for OM's Ratis server rpc.
</description>
</property>
<property>
<name>ozone.om.leader.election.minimum.timeout.duration</name>
<value>5s</value>
<tag>OZONE, OM, RATIS, MANAGEMENT, DEPRECATED</tag>
<description>DEPRECATED. Leader election timeout uses ratis
rpc timeout which can be set via ozone.om.ratis.minimum.timeout.
</description>
</property>
<property>
<name>ozone.om.ratis.server.leaderelection.pre-vote </name>
<value>false</value>
<tag>OZONE, OM, RATIS, MANAGEMENT</tag>
<description>Enable/disable OM HA leader election pre-vote phase.
</description>
</property>
<property>
<name>ozone.om.ratis.server.failure.timeout.duration</name>
<value>120s</value>
<tag>OZONE, OM, RATIS, MANAGEMENT</tag>
<description>The timeout duration for ratis server failure detection,
once the threshold has reached, the ratis state machine will be informed
about the failure in the ratis ring.
</description>
</property>
<property>
<name>ozone.om.ratis.snapshot.dir</name>
<value/>
<tag>OZONE, OM, STORAGE, MANAGEMENT, RATIS</tag>
<description>This directory is used for storing OM's snapshot
related files like the ratisSnapshotIndex and DB checkpoint from leader
OM.
If undefined, OM snapshot dir will fallback to ozone.metadata.dirs.
This fallback approach is not recommended for production environments.
</description>
</property>
<property>
<name>ozone.om.snapshot.provider.socket.timeout</name>
<value>5000s</value>
<tag>OZONE, OM, HA, MANAGEMENT</tag>
<description>
Socket timeout for HTTP call made by OM Snapshot Provider to request
OM snapshot from OM Leader.
</description>
</property>
<property>
<name>ozone.om.snapshot.provider.connection.timeout</name>
<value>5000s</value>
<tag>OZONE, OM, HA, MANAGEMENT</tag>
<description>
Connection timeout for HTTP call made by OM Snapshot Provider to request
OM snapshot from OM Leader.
</description>
</property>
<property>
<name>ozone.om.snapshot.provider.request.timeout</name>
<value>5000ms</value>
<tag>OZONE, OM, HA, MANAGEMENT</tag>
<description>
Connection request timeout for HTTP call made by OM Snapshot Provider to
request OM snapshot from OM Leader.
</description>
</property>
<property>
<name>ozone.acl.authorizer.class</name>
<value>org.apache.hadoop.ozone.security.acl.OzoneAccessAuthorizer</value>
<tag>OZONE, SECURITY, ACL</tag>
<description>Acl authorizer for Ozone.
</description>
</property>
<property>
<name>ozone.acl.enabled</name>
<value>false</value>
<tag>OZONE, SECURITY, ACL</tag>
<description>Key to enable/disable ozone acls.</description>
</property>
<property>
<name>ozone.om.kerberos.keytab.file</name>
<value>/etc/security/keytabs/OM.keytab</value>
<tag>OZONE, SECURITY, KERBEROS</tag>
<description> The keytab file used by OzoneManager daemon to login as its
service principal. The principal name is configured with
ozone.om.kerberos.principal.
</description>
</property>
<property>
<name>ozone.om.kerberos.principal</name>
<value>OM/_HOST@REALM</value>
<tag>OZONE, SECURITY, KERBEROS</tag>
<description>The OzoneManager service principal. Ex om/_HOST@REALM.COM</description>
</property>
<property>
<name>ozone.om.http.auth.kerberos.principal</name>
<value>HTTP/_HOST@REALM</value>
<tag>OZONE, SECURITY, KERBEROS</tag>
<description>
Ozone Manager http server service principal if SPNEGO is enabled for om http server.
</description>
</property>
<property>
<name>ozone.om.http.auth.kerberos.keytab</name>
<value>/etc/security/keytabs/HTTP.keytab</value>
<tag>OZONE, SECURITY, KERBEROS</tag>
<description>
The keytab file used by OM http server to login as its service
principal if SPNEGO is enabled for om http server.
</description>
</property>
<property>
<name>hdds.key.len</name>
<value>2048</value>
<tag>SCM, HDDS, X509, SECURITY</tag>
<description>
SCM CA key length. This is an algorithm-specific metric, such as modulus length, specified in number of bits.
</description>
</property>
<property>
<name>hdds.key.dir.name</name>
<value>keys</value>
<tag>SCM, HDDS, X509, SECURITY</tag>
<description>
Directory to store public/private key for SCM CA. This is relative to ozone/hdds meteadata dir.
</description>
</property>
<property>
<name>hdds.block.token.expiry.time</name>
<value>1d</value>
<tag>OZONE, HDDS, SECURITY, TOKEN</tag>
<description>
Default value for expiry time of block token. This
setting supports multiple time unit suffixes as described in
dfs.heartbeat.interval. If no suffix is specified, then milliseconds is
assumed.
</description>
</property>
<property>
<name>hdds.block.token.enabled</name>
<value>false</value>
<tag>OZONE, HDDS, SECURITY, TOKEN</tag>
<description>True if block tokens are enabled, else false.</description>
</property>
<property>
<name>hdds.container.token.enabled</name>
<value>false</value>
<tag>OZONE, HDDS, SECURITY, TOKEN</tag>
<description>True if container tokens are enabled, else false.</description>
</property>
<property>
<name>hdds.x509.file.name</name>
<value>certificate.crt</value>
<tag>OZONE, HDDS, SECURITY</tag>
<description>Certificate file name.</description>
</property>
<property>
<name>hdds.grpc.tls.provider</name>
<value>OPENSSL</value>
<tag>OZONE, HDDS, SECURITY, TLS</tag>
<description>HDDS GRPC server TLS provider.</description>
</property>
<property>
<name>hdds.grpc.tls.enabled</name>
<value>false</value>
<tag>OZONE, HDDS, SECURITY, TLS</tag>
<description>If HDDS GRPC server TLS is enabled.</description>
</property>
<property>
<name>hdds.x509.default.duration</name>
<value>P365D</value>
<tag>OZONE, HDDS, SECURITY</tag>
<description>Default duration for which x509 certificates issued by SCM are
valid. The formats accepted are based on the ISO-8601 duration format
PnDTnHnMn.nS</description>
</property>
<property>
<name>hdds.x509.dir.name</name>
<value>certs</value>
<tag>OZONE, HDDS, SECURITY</tag>
<description>X509 certificate directory name.</description>
</property>
<property>
<name>hdds.x509.max.duration</name>
<value>P1865D</value>
<tag>OZONE, HDDS, SECURITY</tag>
<description>Max time for which certificate issued by SCM CA are valid.
This duration is used for self-signed root cert and scm sub-ca certs
issued by root ca. The formats accepted are based on the ISO-8601
duration format PnDTnHnMn.nS</description>
</property>
<property>
<name>hdds.x509.signature.algorithm</name>
<value>SHA256withRSA</value>
<tag>OZONE, HDDS, SECURITY</tag>
<description>X509 signature certificate.</description>
</property>
<property>
<name>ozone.scm.security.handler.count.key</name>
<value>2</value>
<tag>OZONE, HDDS, SECURITY</tag>
<description>Threads configured for SCMSecurityProtocolServer.</description>
</property>
<property>
<name>ozone.scm.security.service.address</name>
<value/>
<tag>OZONE, HDDS, SECURITY</tag>
<description>Address of SCMSecurityProtocolServer.</description>
</property>
<property>
<name>ozone.scm.security.service.bind.host</name>
<value>0.0.0.0</value>
<tag>OZONE, HDDS, SECURITY</tag>
<description>SCM security server host.</description>
</property>
<property>
<name>ozone.scm.security.service.port</name>
<value>9961</value>
<tag>OZONE, HDDS, SECURITY</tag>
<description>SCM security server port.</description>
</property>
<property>
<name>ozone.scm.service.ids</name>
<value></value>
<tag>OZONE, SCM, HA</tag>
<description>
Comma-separated list of SCM service Ids. This property allows the client
to figure out quorum of OzoneManager address.
</description>
</property>
<property>
<name>ozone.scm.default.service.id</name>
<value></value>
<tag>OZONE, SCM, HA</tag>
<description>
Service ID of the SCM. If this is not set fall back to
ozone.scm.service.ids to find the service ID it belongs to.
</description>
</property>
<property>
<name>ozone.scm.nodes.EXAMPLESCMSERVICEID</name>
<value></value>
<tag>OZONE, SCM, HA</tag>
<description>
Comma-separated list of SCM node Ids for a given SCM service ID (eg.
EXAMPLESCMSERVICEID). The SCM service ID should be the value (one of the
values if there are multiple) set for the parameter ozone.scm.service.ids.
Unique identifiers for each SCM Node, delimited by commas. This will be
used by SCMs in HA setup to determine all the SCMs
belonging to the same SCM in the cluster. For example, if you
used “scmService1” as the SCM service ID previously, and you wanted to
use “scm1”, “scm2” and "scm3" as the individual IDs of the SCMs,
you would configure a property ozone.scm.nodes.scmService1, and its value
"scm1,scm2,scm3".
</description>
</property>
<property>
<name>ozone.scm.node.id</name>
<value></value>
<tag>OZONE, SCM, HA</tag>
<description>
The ID of this SCM node. If the SCM node ID is not configured it
is determined automatically by matching the local node's address
with the configured address.
If node ID is not deterministic from the configuration, then it is set
to the scmId from the SCM version file.
</description>
</property>
<property>
<name>ozone.scm.primordial.node.id</name>
<value></value>
<tag>OZONE, SCM, HA</tag>
<description>
optional config, if being set will cause scm --init to only take effect on
the specific node and ignore scm --bootstrap cmd.
Similarly, scm --init will be ignored on the non-primordial scm nodes.
The config can either be set equal to the hostname or the node id of any
of the scm nodes.
With the config set, applications/admins can safely execute init and
bootstrap commands safely on all scm instances.
If a cluster is upgraded from non-ratis to ratis based SCM, scm --init
needs to re-run for switching from
non-ratis based SCM to ratis-based SCM on the primary node.
</description>
</property>
<property>
<name>ozone.scm.skip.bootstrap.validation</name>
<value>false</value>
<tag>OZONE, SCM, HA</tag>
<description>
optional config, the config when set to true skips the clusterId
validation from leader scm during bootstrap
</description>
</property>
<property>
<name>ozone.scm.ratis.port</name>
<value>9894</value>
<tag>OZONE, SCM, HA, RATIS</tag>
<description>
The port number of the SCM's Ratis server.
</description>
</property>
<property>
<name>ozone.scm.grpc.port</name>
<value>9895</value>
<tag>OZONE, SCM, HA, RATIS</tag>
<description>
The port number of the SCM's grpc server.
</description>
</property>
<property>
<name>hdds.metadata.dir</name>
<value/>
<tag>X509, SECURITY</tag>
<description>
Absolute path to HDDS metadata dir.
</description>
</property>
<property>
<name>hdds.priv.key.file.name</name>
<value>private.pem</value>
<tag>X509, SECURITY</tag>
<description>
Name of file which stores private key generated for SCM CA.
</description>
</property>
<property>
<name>hdds.public.key.file.name</name>
<value>public.pem</value>
<tag>X509, SECURITY</tag>
<description>
Name of file which stores public key generated for SCM CA.
</description>
</property>
<property>
<name>ozone.manager.delegation.remover.scan.interval</name>
<value>3600000</value>
<description>
Time interval after which ozone secret manger scans for expired
delegation token.
</description>
</property>
<property>
<name>ozone.manager.delegation.token.renew-interval</name>
<value>1d</value>
<description>
Default time interval after which ozone delegation token will
require renewal before any further use.
</description>
</property>
<property>
<name>ozone.manager.delegation.token.max-lifetime</name>
<value>7d</value>
<description>
Default max time interval after which ozone delegation token will
not be renewed.
</description>
</property>
<property>
<name>ozone.fs.iterate.batch-size</name>
<value>100</value>
<tag>OZONE, OZONEFS</tag>
<description>
Iterate batch size of delete when use BasicOzoneFileSystem.
</description>
</property>
<property>
<name>ozone.manager.db.checkpoint.transfer.bandwidthPerSec</name>
<value>0</value>
<tag>OZONE</tag>
<description>
Maximum bandwidth used for Ozone Manager DB checkpoint download through
the servlet.
</description>
</property>
<property>
<name>ozone.freon.http-address</name>
<value>0.0.0.0:9884</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The address and the base port where the FREON web ui will listen on.
If the port is 0 then the server will start on a free port.
</description>
</property>
<property>
<name>ozone.freon.http-bind-host</name>
<value>0.0.0.0</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The actual address the Freon web server will bind to. If this
optional address is set, it overrides only the hostname portion of
ozone.freon.http-address.
</description>
</property>
<property>
<name>ozone.freon.http.enabled</name>
<value>true</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
Property to enable or disable FREON web ui.
</description>
</property>
<property>
<name>ozone.freon.https-address</name>
<value>0.0.0.0:9885</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The address and the base port where the Freon web server will listen
on using HTTPS.
If the port is 0 then the server will start on a free port.
</description>
</property>
<property>
<name>ozone.freon.https-bind-host</name>
<value>0.0.0.0</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The actual address the Freon web server will bind to using HTTPS.
If this optional address is set, it overrides only the hostname portion of
ozone.freon.http-address.
</description>
</property>
<property>
<name>ozone.freon.http.auth.kerberos.principal</name>
<value>HTTP/_HOST@REALM</value>
<tag>SECURITY</tag>
<description>
Security principal used by freon.
</description>
</property>
<property>
<name>ozone.freon.http.auth.kerberos.keytab</name>
<value>/etc/security/keytabs/HTTP.keytab</value>
<tag>SECURITY</tag>
<description>
Keytab used by Freon.
</description>
</property>
<property>
<name>hdds.security.client.datanode.container.protocol.acl</name>
<value>*</value>
<tag>SECURITY</tag>
<description>
Comma separated list of users and groups allowed to access
client datanode container protocol.
</description>
</property>
<property>
<name>hdds.security.client.scm.block.protocol.acl</name>
<value>*</value>
<tag>SECURITY</tag>
<description>
Comma separated list of users and groups allowed to access
client scm block protocol.
</description>
</property>
<property>
<name>hdds.security.client.scm.certificate.protocol.acl</name>
<value>*</value>
<tag>SECURITY</tag>
<description>
Comma separated list of users and groups allowed to access
client scm certificate protocol.
</description>
</property>
<property>
<name>hdds.security.client.scm.container.protocol.acl</name>
<value>*</value>
<tag>SECURITY</tag>
<description>
Comma separated list of users and groups allowed to access
client scm container protocol.
</description>
</property>
<property>
<name>ozone.om.security.client.protocol.acl</name>
<value>*</value>
<tag>SECURITY</tag>
<description>
Comma separated list of users and groups allowed to access
client ozone manager protocol.
</description>
</property>
<property>
<name>ozone.om.security.admin.protocol.acl</name>
<value>*</value>
<tag>SECURITY</tag>
<description>
Comma separated list of users and groups allowed to access ozone
manager admin protocol.
</description>
</property>
<property>
<name>hdds.datanode.http.auth.kerberos.principal</name>
<value>HTTP/_HOST@REALM</value>
<tag>HDDS, SECURITY, MANAGEMENT, KERBEROS</tag>
<description>
The kerberos principal for the datanode http server.
</description>
</property>
<property>
<name>hdds.datanode.http.auth.kerberos.keytab</name>
<value>/etc/security/keytabs/HTTP.keytab</value>
<tag>HDDS, SECURITY, MANAGEMENT, KERBEROS</tag>
<description>
The kerberos keytab file for datanode http server
</description>
</property>
<property>
<name>hdds.datanode.http-address</name>
<value>0.0.0.0:9882</value>
<tag>HDDS, MANAGEMENT</tag>
<description>
The address and the base port where the Datanode web ui will listen on.
If the port is 0 then the server will start on a free port.
</description>
</property>
<property>
<name>hdds.datanode.http-bind-host</name>
<value>0.0.0.0</value>
<tag>HDDS, MANAGEMENT</tag>
<description>
The actual address the Datanode web server will bind to. If this
optional address is set, it overrides only the hostname portion of
hdds.datanode.http-address.
</description>
</property>
<property>
<name>hdds.datanode.http.enabled</name>
<value>true</value>
<tag>HDDS, MANAGEMENT</tag>
<description>
Property to enable or disable Datanode web ui.
</description>
</property>
<property>
<name>hdds.datanode.https-address</name>
<value>0.0.0.0:9883</value>
<tag>HDDS, MANAGEMENT, SECURITY</tag>
<description>
The address and the base port where the Datanode web UI will listen
on using HTTPS.
If the port is 0 then the server will start on a free port.
</description>
</property>
<property>
<name>hdds.datanode.https-bind-host</name>
<value>0.0.0.0</value>
<tag>HDDS, MANAGEMENT, SECURITY</tag>
<description>
The actual address the Datanode web server will bind to using HTTPS.
If this optional address is set, it overrides only the hostname portion of
hdds.datanode.http-address.
</description>
</property>
<property>
<name>ozone.client.failover.max.attempts</name>
<value>500</value>
<description>
Expert only. Ozone RpcClient attempts talking to each OzoneManager
ipc.client.connect.max.retries (default = 10) number of times before
failing over to another OzoneManager, if available. This parameter
represents the number of times the client will failover before giving
up. This value is kept high so that client does not give up trying to
connect to OMs easily.
</description>
</property>
<property>
<name>ozone.client.wait.between.retries.millis</name>
<value>2000</value>
<description>
Expert only. The time to wait, in milliseconds, between retry attempts
to contact OM. Wait time increases linearly if same OM is retried
again. If retrying on multiple OMs proxies in round robin fashion, the
wait time is introduced after all the OM proxies have been attempted once.
</description>
</property>
<property>
<name>ozone.om.admin.protocol.max.retries</name>
<value>20</value>
<tag>OM, MANAGEMENT</tag>
<description>
Expert only. The maximum number of retries for Ozone Manager Admin
protocol on each OM.
</description>
</property>
<property>
<name>ozone.om.admin.protocol.wait.between.retries</name>
<value>1000</value>
<tag>OM, MANAGEMENT</tag>
<description>
Expert only. The time to wait, in milliseconds, between retry attempts
for Ozone Manager Admin protocol.
</description>
</property>
<property>
<name>ozone.recon.http.enabled</name>
<value>true</value>
<tag>RECON, MANAGEMENT</tag>
<description>
Property to enable or disable Recon web user interface.
</description>
</property>
<property>
<name>ozone.recon.http-address</name>
<value>0.0.0.0:9888</value>
<tag>RECON, MANAGEMENT</tag>
<description>
The address and the base port where the Recon web UI will listen on.
If the port is 0, then the server will start on a free port. However, it
is best to specify a well-known port, so it is easy to connect and see
the Recon management UI.
</description>
</property>
<property>
<name>ozone.recon.http-bind-host</name>
<value>0.0.0.0</value>
<tag>RECON, MANAGEMENT</tag>
<description>
The actual address the Recon server will bind to. If this optional
the address is set, it overrides only the hostname portion of
ozone.recon.http-address.
</description>
</property>
<property>
<name>ozone.recon.https-bind-host</name>
<value>0.0.0.0</value>
<tag>RECON, MANAGEMENT, SECURITY</tag>
<description>
The actual address the Recon web server will bind to using HTTPS.
If this optional address is set, it overrides only the hostname portion of
ozone.recon.https-address.
</description>
</property>
<property>
<name>ozone.recon.https-address</name>
<value>0.0.0.0:9889</value>
<tag>RECON, MANAGEMENT, SECURITY</tag>
<description>
The address and the base port where the Recon web UI will listen
on using HTTPS. If the port is 0 then the server will start on a free
port.
</description>
</property>
<property>
<name>ozone.recon.http.auth.kerberos.keytab</name>
<value>/etc/security/keytabs/HTTP.keytab</value>
<tag>RECON, SECURITY, KERBEROS</tag>
<description>
The keytab file for HTTP Kerberos authentication in Recon.
</description>
</property>
<property>
<name>ozone.recon.http.auth.kerberos.principal</name>
<value>HTTP/_HOST@REALM</value>
<tag>RECON, SECURITY, KERBEROS</tag>
<description>The server principal used by Ozone Recon server. This is
typically set to HTTP/_HOST@REALM.TLD The SPNEGO server principal
begins with the prefix HTTP/ by convention.
</description>
</property>
<property>
<name>ozone.recon.administrators</name>
<value/>
<tag>RECON, SECURITY</tag>
<description>
Recon administrator users delimited by a comma.
This is the list of users who can access admin only information from recon.
Users defined in ozone.administrators will always be able to access all
recon information regardless of this setting.
</description>
</property>
<property>
<name>ozone.recon.administrators.groups</name>
<value/>
<tag>RECON, SECURITY</tag>
<description>
Recon administrator groups delimited by a comma.
This is the list of groups who can access admin only information
from recon.
It is enough to either have the name defined in ozone.recon.administrators
or be directly or indirectly in a group defined in this property.
</description>
</property>
<property>
<name>hdds.datanode.http.auth.type</name>
<value>simple</value>
<tag>DATANODE, SECURITY, KERBEROS</tag>
<description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
will be used for http authentication.
</description>
</property>
<property>
<name>ozone.freon.http.auth.type</name>
<value>simple</value>
<tag>FREON, SECURITY</tag>
<description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
will be used for http authentication.
</description>
</property>
<property>
<name>ozone.om.http.auth.type</name>
<value>simple</value>
<tag>OM, SECURITY, KERBEROS</tag>
<description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
will be used for http authentication.
</description>
</property>
<property>
<name>hdds.scm.http.auth.type</name>
<value>simple</value>
<tag>OM, SECURITY, KERBEROS</tag>
<description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
will be used for http authentication.
</description>
</property>
<property>
<name>ozone.recon.http.auth.type</name>
<value>simple</value>
<tag>RECON, SECURITY, KERBEROS</tag>
<description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
will be used for http authentication.
</description>
</property>
<property>
<name>ozone.s3g.http.auth.type</name>
<value>simple</value>
<tag>S3G, SECURITY, KERBEROS</tag>
<description> simple or kerberos. If kerberos is set, Kerberos SPNEOGO
will be used for http authentication.
</description>
</property>
<property>
<name>ozone.recon.db.dir</name>
<value/>
<tag>OZONE, RECON, STORAGE, PERFORMANCE</tag>
<description>
Directory where the Recon Server stores its metadata. This should
be specified as a single directory. If the directory does not
exist then the Recon will attempt to create it.
If undefined, then the Recon will log a warning and fallback to
ozone.metadata.dirs. This fallback approach is not recommended for
production environments.
</description>
</property>
<property>
<name>ozone.scm.network.topology.schema.file</name>
<value>network-topology-default.xml</value>
<tag>OZONE, MANAGEMENT</tag>
<description>
The schema file defines the ozone network topology. We currently support
xml(default) and yaml format. Refer to the samples in the topology
awareness document for xml and yaml topology definition samples.
</description>
</property>
<property>
<name>ozone.network.topology.aware.read</name>
<value>false</value>
<tag>OZONE, PERFORMANCE</tag>
<description>
Whether to enable topology aware read to improve the read performance.
</description>
</property>
<property>
<name>ozone.recon.om.db.dir</name>
<value/>
<tag>OZONE, RECON, STORAGE</tag>
<description>
Directory where the Recon Server stores its OM snapshot DB. This should
be specified as a single directory. If the directory does not
exist then the Recon will attempt to create it.
If undefined, then the Recon will log a warning and fallback to
ozone.metadata.dirs. This fallback approach is not recommended for
production environments.
</description>
</property>
<property>
<name>ozone.recon.om.connection.request.timeout</name>
<value>5000</value>
<tag>OZONE, RECON, OM</tag>
<description>
Connection request timeout in milliseconds for HTTP call made by Recon to
request OM DB snapshot.
</description>
</property>
<property>
<name>ozone.recon.om.connection.timeout</name>
<value>5s</value>
<tag>OZONE, RECON, OM</tag>
<description>
Connection timeout for HTTP call in milliseconds made by Recon to request
OM snapshot.
</description>
</property>
<property>
<name>ozone.recon.scm.connection.request.timeout</name>
<value>5s</value>
<tag>OZONE, RECON, SCM</tag>
<description>
Connection request timeout in milliseconds for HTTP call made by Recon to
request SCM DB snapshot.
</description>
</property>
<property>
<name>ozone.recon.scm.connection.timeout</name>
<value>5s</value>
<tag>OZONE, RECON, SCM</tag>
<description>
Connection timeout for HTTP call in milliseconds made by Recon to request
SCM snapshot.
</description>
</property>
<property>
<name>ozone.recon.om.socket.timeout</name>
<value>5s</value>
<tag>OZONE, RECON, OM</tag>
<description>
Socket timeout in milliseconds for HTTP call made by Recon to request
OM snapshot.
</description>
</property>
<property>
<name>ozone.recon.om.snapshot.task.initial.delay</name>
<value>1m</value>
<tag>OZONE, RECON, OM</tag>
<description>
Initial delay in MINUTES by Recon to request OM DB Snapshot.
</description>
</property>
<property>
<name>ozone.recon.om.snapshot.task.interval.delay</name>
<value>10m</value>
<tag>OZONE, RECON, OM</tag>
<description>
Interval in MINUTES by Recon to request OM DB Snapshot.
</description>
</property>
<property>
<name>ozone.recon.om.snapshot.task.flush.param</name>
<value>false</value>
<tag>OZONE, RECON, OM</tag>
<description>
Request to flush the OM DB before taking checkpoint snapshot.
</description>
</property>
<property>
<name>recon.om.delta.update.limit</name>
<value>2000</value>
<tag>OZONE, RECON</tag>
<description>
Recon each time get a limited delta updates from OM.
The actual fetched data might be larger than this limit.
</description>
</property>
<property>
<name>recon.om.delta.update.loop.limit</name>
<value>10</value>
<tag>OZONE, RECON</tag>
<description>
The sync between Recon and OM consists of several small
fetch loops.
</description>
</property>
<property>
<name>ozone.recon.scm.container.threshold</name>
<value>100</value>
<tag>OZONE, RECON, SCM</tag>
<description>
Threshold value for the difference in number of containers
in SCM and RECON.
</description>
</property>
<property>
<name>ozone.recon.scm.snapshot.enabled</name>
<value>false</value>
<tag>OZONE, RECON, SCM</tag>
<description>
If enabled, SCM DB Snapshot is taken by Recon.
</description>
</property>
<property>
<name>hdds.tracing.enabled</name>
<value>false</value>
<tag>OZONE, HDDS</tag>
<description>
If enabled, tracing information is sent to tracing server.
</description>
</property>
<property>
<name>ozone.recon.task.thread.count</name>
<value>1</value>
<tag>OZONE, RECON</tag>
<description>
The number of Recon Tasks that are waiting on updates from OM.
</description>
</property>
<property>
<name>ozone.scm.datanode.admin.monitor.interval</name>
<value>30s</value>
<tag>SCM</tag>
<description>
This sets how frequently the datanode admin monitor runs to check for
nodes added to the admin workflow or removed from it. The progress
of decommissioning and entering maintenance nodes is also checked to see
if they have completed.
</description>
</property>
<property>
<name>ozone.client.list.trash.keys.max</name>
<value>1000</value>
<tag>OZONE, CLIENT</tag>
<description>
The maximum number of keys to return for a list trash request.
</description>
</property>
<property>
<name>ozone.http.basedir</name>
<value/>
<tag>OZONE, OM, SCM, MANAGEMENT</tag>
<description>
The base dir for HTTP Jetty server to extract contents. If this property
is not configured, by default, Jetty will create a directory inside the
directory named by the java.io.tmpdir System property(/tmp by default).
While in production environment, it's strongly suggested to instruct Jetty
to use a different parent directory by setting this property to the name
of the desired parent directory. The value of the property will be used to
set Jetty context attribute 'org.eclipse.jetty.webapp.basetempdir'.
The directory named by this property must exist and be writeable.
</description>
</property>
<property>
<name>ozone.http.policy</name>
<value>HTTP_ONLY</value>
<tag>OZONE, SECURITY, MANAGEMENT</tag>
<description>Decide if HTTPS(SSL) is supported on Ozone
This configures the HTTP endpoint for Ozone 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
</description>
</property>
<property>
<name>ozone.https.client.need-auth</name>
<tag>OZONE, SECURITY, MANAGEMENT</tag>
<value>false</value>
<description>
Whether SSL client certificate authentication is required
</description>
</property>
<property>
<name>ozone.https.client.keystore.resource</name>
<tag>OZONE, SECURITY, MANAGEMENT</tag>
<value>ssl-client.xml</value>
<description>
Resource file from which ssl client keystore
information will be extracted
</description>
</property>
<property>
<name>ozone.https.server.keystore.resource</name>
<tag>OZONE, SECURITY, MANAGEMENT</tag>
<value>ssl-server.xml</value>
<description>Resource file from which ssl server keystore
information will be extracted
</description>
</property>
<property>
<name>ozone.s3g.client.buffer.size</name>
<tag>OZONE, S3GATEWAY</tag>
<value>4KB</value>
<description>
The size of the buffer which is for read block. (4KB by default).
</description>
</property>
<property>
<name>ssl.server.keystore.keypassword</name>
<tag>OZONE, SECURITY, MANAGEMENT</tag>
<value/>
<description>Keystore key password for HTTPS SSL configuration
</description>
</property>
<property>
<name>ssl.server.keystore.location</name>
<tag>OZONE, SECURITY, MANAGEMENT</tag>
<value/>
<description>
Keystore location for HTTPS SSL configuration
</description>
</property>
<property>
<name>ssl.server.keystore.password</name>
<tag>OZONE, SECURITY, MANAGEMENT</tag>
<value/>
<description>
Keystore password for HTTPS SSL configuration
</description>
</property>
<property>
<name>ssl.server.truststore.location</name>
<tag>OZONE, SECURITY, MANAGEMENT</tag>
<value/>
<description>
Truststore location for HTTPS SSL configuration
</description>
</property>
<property>
<name>ssl.server.truststore.password</name>
<tag>OZONE, SECURITY, MANAGEMENT</tag>
<value/>
<description>
Truststore password for HTTPS SSL configuration
</description>
</property>
<property>
<name>hdds.datanode.ratis.server.request.timeout</name>
<tag>OZONE, DATANODE</tag>
<value>2m</value>
<description>
Timeout for the request submitted directly to Ratis in datanode.
</description>
</property>
<property>
<name>ozone.om.keyname.character.check.enabled</name>
<tag>OZONE, OM</tag>
<value>false</value>
<description>If true, then enable to check if the key name
contains illegal characters when creating/renaming key.
For the definition of illegal characters, follow the
rules in Amazon S3's object key naming guide.
</description>
</property>
<property>
<name>ozone.om.enable.filesystem.paths</name>
<tag>OZONE, OM</tag>
<value>false</value>
<description>If true, key names will be interpreted as file system paths.
"/" will be treated as a special character and paths will be normalized
and must follow Unix filesystem path naming conventions. This flag will
be helpful when objects created by S3G need to be accessed using OFS/O3Fs.
If false, it will fallback to default behavior of Key/MPU create
requests where key paths are not normalized and any intermediate
directories will not be created or any file checks happens to check
filesystem semantics.
</description>
</property>
<property>
<name>ozone.om.key.path.lock.enabled</name>
<tag>OZONE, OM</tag>
<value>false</value>
<description>Defaults to false. If true, the fine-grained KEY_PATH_LOCK
functionality is enabled. If false, it is disabled.
</description>
</property>
<property>
<name>ozone.client.key.provider.cache.expiry</name>
<tag>OZONE, CLIENT, SECURITY</tag>
<value>10d</value>
<description>Ozone client security key provider cache expiration time.
</description>
</property>
<property>
<name>ozone.scm.info.wait.duration</name>
<tag>OZONE, SCM, OM</tag>
<value>10m</value>
<description> Maximum amount of duration OM/SCM waits to get Scm Info/Scm
signed cert during OzoneManager init/SCM bootstrap.
</description>
</property>
<property>
<name>ozone.scm.ca.list.retry.interval</name>
<tag>OZONE, SCM, OM, DATANODE</tag>
<value>10s</value>
<description>SCM client wait duration between each retry to get Scm CA
list. OM/Datanode obtain CA list during startup, and wait
for the CA List size to be matched with SCM node count size plus
1. (Additional one certificate is root CA certificate). If the received
CA list size is not matching with expected count, this is the duration
used to wait before making next attempt to get CA list.
</description>
</property>
<property>
<name>ozone.client.key.latest.version.location</name>
<tag>OZONE, CLIENT</tag>
<value>true</value>
<description>Ozone client gets the latest version location.
</description>
</property>
<property>
<name>ozone.network.flexible.fqdn.resolution.enabled</name>
<tag>OZONE, SCM, OM</tag>
<value>false</value>
<description>SCM, OM hosts will be able to resolve itself based on its host
name instead of fqdn. It is useful for deploying to kubernetes
environment, during the initial launching time when
[pod_name].[service_name] is not resolvable yet because of the probe.
</description>
</property>
<property>
<name>ozone.network.jvm.address.cache.enabled</name>
<tag>OZONE, SCM, OM, DATANODE</tag>
<value>true</value>
<description>Disable the jvm network address cache. In environment such as
kubernetes, IPs of instances of scm, om and datanodes can be changed.
Disabling this cache helps to quickly resolve the fqdn's to the new IPs.
</description>
</property>
<property>
<name>ozone.directory.deleting.service.interval</name>
<value>1m</value>
<tag>OZONE, PERFORMANCE, OM</tag>
<description>Time interval of the directory deleting service. It runs on OM
periodically and cleanup orphan directory and its sub-tree. For every
orphan directory it deletes the sub-path tree structure(dirs/files). It
sends sub-files to KeyDeletingService to deletes its blocks. Unit could
be defined with postfix (ns,ms,s,m,h,d)
</description>
</property>
<property>
<name>ozone.path.deleting.limit.per.task</name>
<value>10000</value>
<tag>OZONE, PERFORMANCE, OM</tag>
<description>A maximum number of paths(dirs/files) to be deleted by
directory deleting service per time interval.
</description>
</property>
<property>
<name>ozone.scm.event.ContainerReport.thread.pool.size</name>
<value>10</value>
<tag>OZONE, SCM</tag>
<description>Thread pool size configured to process container reports.
</description>
</property>
<property>
<name>ozone.scm.datanode.ratis.volume.free-space.min</name>
<value>1GB</value>
<tag>OZONE, DATANODE</tag>
<description>Minimum amount of storage space required for each ratis
volume on a datanode to hold a new pipeline.
Datanodes with all its ratis volumes with space under this value
will not be allocated a pipeline or container replica.
</description>
</property>
<property>
<name>ozone.scm.ha.ratis.storage.dir</name>
<value></value>
<tag>OZONE, SCM, HA, RATIS</tag>
<description>Storage directory used by SCM to write Ratis logs.</description>
</property>
<property>
<name>ozone.scm.ha.ratis.rpc.type</name>
<value>GRPC</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>Ratis supports different kinds of transports like
netty, GRPC, Hadoop RPC etc. This picks one of those for
this cluster.
</description>
</property>
<property>
<name>ozone.scm.ha.ratis.segment.size</name>
<value>4MB</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>The size of the raft segment used by Apache Ratis on
SCM. (4 MB by default)
</description>
</property>
<property>
<name>ozone.scm.ha.ratis.segment.preallocated.size</name>
<value>4MB</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>The size of the buffer which is preallocated for
raft segment used by Apache Ratis on SCM.(4 MB by default)
</description>
</property>
<property>
<name>ozone.scm.ha.ratis.log.appender.queue.byte-limit</name>
<value>32MB</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>Byte limit for Raft's Log Worker queue.</description>
</property>
<property>
<name>ozone.scm.ha.ratis.log.appender.queue.num-elements</name>
<value>1024</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>Number of operation pending with Raft's Log Worker.
</description>
</property>
<property>
<name>ozone.scm.ha.ratis.log.purge.enabled</name>
<value>false</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>whether enable raft log purge.</description>
</property>
<property>
<name>ozone.scm.ha.ratis.log.purge.gap</name>
<value>1000000</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>The minimum gap between log indices for Raft server to
purge its log segments after taking snapshot.
</description>
</property>
<property>
<name>ozone.scm.ha.ratis.snapshot.threshold</name>
<value>1000</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>The threshold to trigger a Ratis taking snapshot
operation for SCM.
</description>
</property>
<property>
<name>ozone.scm.ha.ratis.request.timeout</name>
<value>30s</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>The timeout duration for SCM's Ratis server RPC.</description>
</property>
<property>
<name>ozone.scm.ha.ratis.server.retry.cache.timeout</name>
<value>60s</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>Retry Cache entry timeout for SCM's Ratis server.</description>
</property>
<property>
<name>ozone.scm.ha.ratis.leader.election.timeout</name>
<value>5s</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>The minimum timeout duration for SCM ratis leader
election. Default is 1s.</description>
</property>
<property>
<name>ozone.scm.ha.ratis.server.leaderelection.pre-vote</name>
<value>false</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>Enable/disable SCM HA leader election pre-vote phase.</description>
</property>
<property>
<name>ozone.scm.ha.ratis.leader.ready.wait.timeout</name>
<value>60s</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>The minimum timeout duration for waiting for
leader readiness.</description>
</property>
<property>
<name>ozone.scm.ha.ratis.leader.ready.check.interval</name>
<value>2s</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>The interval between ratis server performing
a leader readiness check.
</description>
</property>
<property>
<name>ozone.scm.ha.ratis.server.failure.timeout.duration</name>
<value>120s</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>The timeout duration for ratis server failure
detection, once the threshold has reached, the ratis state
machine will be informed about the failure in the ratis ring.
</description>
</property>
<property>
<name>ozone.scm.ha.ratis.snapshot.dir</name>
<value></value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>The ratis snapshot dir location.</description>
</property>
<property>
<name>ozone.scm.ha.grpc.deadline.interval</name>
<value>30m</value>
<tag>SCM, OZONE, HA, RATIS</tag>
<description>Deadline for SCM DB checkpoint interval.</description>
</property>
<property>
<name>ozone.s3g.kerberos.keytab.file</name>
<value>/etc/security/keytabs/s3g.keytab</value>
<tag>OZONE, SECURITY, KERBEROS, S3GATEWAY</tag>
<description> The keytab file used by S3Gateway daemon to login as its
service principal. The principal name is configured with
ozone.s3g.kerberos.principal.
</description>
</property>
<property>
<name>ozone.s3g.kerberos.principal</name>
<value>s3g/_HOST@REALM</value>
<tag>OZONE, SECURITY, KERBEROS, S3GATEWAY</tag>
<description>The S3Gateway service principal.
Ex: s3g/_HOST@REALM.COM</description>
</property>
<property>
<name>hdds.container.checksum.verification.enabled</name>
<value>true</value>
<tag>OZONE, DATANODE</tag>
<description> To enable/disable checksum verification of the
containers.
</description>
</property>
<property>
<name>hadoop.http.idle_timeout.ms</name>
<value>60000</value>
<tag>OZONE, PERFORMANCE, S3GATEWAY</tag>
<description>
OM/SCM/DN/S3GATEWAY Server connection timeout in milliseconds.
</description>
</property>
<property>
<name>ozone.om.grpc.maximum.response.length</name>
<value>134217728</value>
<tag>OZONE, OM, S3GATEWAY</tag>
<description>
OM/S3GATEWAY OMRequest, OMResponse over grpc max message length (bytes).
</description>
</property>
<property>
<name>ozone.default.bucket.layout</name>
<value/>
<tag>OZONE, MANAGEMENT</tag>
<description>
Default bucket layout used by Ozone Manager during bucket creation when a client does not specify the
bucket layout option. Supported values are OBJECT_STORE and FILE_SYSTEM_OPTIMIZED.
OBJECT_STORE: This layout allows the bucket to behave as a pure object store and will not allow
interoperability between S3 and FS APIs.
FILE_SYSTEM_OPTIMIZED: This layout allows the bucket to support atomic rename/delete operations and
also allows interoperability between S3 and FS APIs. Keys written via S3 API with a "/" delimiter
will create intermediate directories.
</description>
</property>
<property>
<name>ozone.client.max.ec.stripe.write.retries</name>
<value>10</value>
<tag>CLIENT</tag>
<description>
When EC stripe write failed, client will request to allocate new block group and write the failed stripe into new
block group. If the same stripe failure continued in newly acquired block group also, then it will retry by
requesting to allocate new block group again. This configuration is used to limit these number of retries. By
default the number of retries are 10.
</description>
</property>
<property>
<name>ozone.audit.log.debug.cmd.list.omaudit</name>
<value></value>
<tag>OM</tag>
<description>
A comma separated list of OzoneManager commands that are written to the OzoneManager audit logs only if the audit
log level is debug. Ex: "ALLOCATE_BLOCK,ALLOCATE_KEY,COMMIT_KEY".
</description>
</property>
<property>
<name>ozone.audit.log.debug.cmd.list.scmaudit</name>
<value></value>
<tag>SCM</tag>
<description>
A comma separated list of SCM commands that are written to the SCM audit logs only if the audit
log level is debug. Ex: "GET_VERSION,REGISTER,SEND_HEARTBEAT".
</description>
</property>
<property>
<name>ozone.audit.log.debug.cmd.list.dnaudit</name>
<value></value>
<tag>DN</tag>
<description>
A comma separated list of Datanode commands that are written to the DN audit logs only if the audit
log level is debug. Ex: "CREATE_CONTAINER,READ_CONTAINER,UPDATE_CONTAINER".
</description>
</property>
<property>
<name>ozone.om.multitenancy.enabled</name>
<value>false</value>
<tag>OZONE, OM</tag>
<description>Enable S3 Multi-Tenancy. If disabled, all S3 multi-tenancy requests are rejected.
</description>
</property>
<property>
<name>ozone.om.multitenancy.ranger.sync.interval</name>
<value>10m</value>
<tag>OZONE, OM</tag>
<description>
Determines how often the Multi-Tenancy Ranger background sync thread
service should run. Background thread periodically checks
Ranger policies and roles created by Multi-Tenancy feature.
And overwrites them if obvious discrepancies are detected.
Value should be set with a unit suffix (ns,ms,s,m,h,d)
</description>
</property>
<property>
<name>ozone.om.multitenancy.ranger.sync.timeout</name>
<value>10s</value>
<tag>OZONE, OM</tag>
<description>
The timeout for each Multi-Tenancy Ranger background sync thread run.
If the timeout has been reached, a warning message will be logged.
</description>
</property>
<property>
<name>ozone.client.fs.default.bucket.layout</name>
<value>FILE_SYSTEM_OPTIMIZED</value>
<tag>OZONE, CLIENT</tag>
<description>
Default bucket layout value used when buckets are created using OFS.
Supported values are LEGACY and FILE_SYSTEM_OPTIMIZED.
FILE_SYSTEM_OPTIMIZED: This layout allows the bucket to support atomic rename/delete operations and
also allows interoperability between S3 and FS APIs. Keys written via S3 API with a "/" delimiter
will create intermediate directories.
</description>
</property>
</configuration>