From 3ef24dc050d19d252060b752309e5a8ba6c12efb Mon Sep 17 00:00:00 2001 From: Dave Marion Date: Tue, 22 Apr 2025 21:36:27 +0000 Subject: [PATCH 1/2] Remove old properties, add 4.x properties and metrics --- _docs-4/configuration/client-properties.md | 39 -- ...t-properties3.md => client-properties4.md} | 4 +- _docs-4/configuration/metrics4.md | 588 ++++++++++++++++++ _docs-4/configuration/server-properties.md | 377 ----------- ...r-properties3.md => server-properties4.md} | 354 ++++++----- 5 files changed, 776 insertions(+), 586 deletions(-) delete mode 100644 _docs-4/configuration/client-properties.md rename _docs-4/configuration/{client-properties3.md => client-properties4.md} (99%) create mode 100644 _docs-4/configuration/metrics4.md delete mode 100644 _docs-4/configuration/server-properties.md rename _docs-4/configuration/{server-properties3.md => server-properties4.md} (59%) diff --git a/_docs-4/configuration/client-properties.md b/_docs-4/configuration/client-properties.md deleted file mode 100644 index e627d5ad8..000000000 --- a/_docs-4/configuration/client-properties.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Client Properties (2.x) -category: configuration -order: 3 ---- - - - - -Below are properties set in `accumulo-client.properties` that configure [Accumulo clients]({{ page.docs_baseurl }}/getting-started/clients#connecting). All properties have been part of the API since 2.0.0 (unless otherwise specified): - -| Property | Default value | Since | Description | -|----------|---------------|-------|-------------| -| instance.name | *empty* | 2.0.0 | Name of Accumulo instance to connect to | -| instance.zookeepers | localhost:2181 | 2.0.0 | Zookeeper connection information for Accumulo instance | -| instance.zookeepers.timeout | 30s | 2.0.0 | Zookeeper session timeout | -| auth.type | password | 2.0.0 | Authentication method (i.e password, kerberos, PasswordToken, KerberosToken, etc) | -| auth.principal | *empty* | 2.0.0 | Accumulo principal/username for chosen authentication method | -| auth.token | *empty* | 2.0.0 | Authentication token (ex. mypassword, /path/to/keytab) | -| batch.writer.durability | default | 2.0.0 | The durability used to write to the write-ahead log. Legal values are: none, which skips the write-ahead log; log, which sends the data to the write-ahead log, but does nothing to make it durable; flush, which pushes data to the file system; and sync, which ensures the data is written to disk. Setting this property will change the durability for the BatchWriter session. A value of "default" will use the table's durability setting. | -| batch.writer.latency.max | 120s | 2.0.0 | Max amount of time (in seconds) to hold data in memory before flushing it | -| batch.writer.memory.max | 50M | 2.0.0 | Max memory (in bytes) to batch before writing | -| batch.writer.threads.max | 3 | 2.0.0 | Maximum number of threads to use for writing data to tablet servers. | -| batch.writer.timeout.max | 0 | 2.0.0 | Max amount of time (in seconds) an unresponsive server will be re-tried. An exception is thrown when this timeout is exceeded. Set to zero for no timeout. | -| batch.scanner.num.query.threads | 3 | 2.0.0 | Number of concurrent query threads to spawn for querying | -| scanner.batch.size | 1000 | 2.0.0 | Number of key/value pairs that will be fetched at time from tablet server | -| ssl.enabled | false | | Enable SSL for client RPC | -| ssl.keystore.password | *empty* | | Password used to encrypt keystore | -| ssl.keystore.path | *empty* | 2.0.0 | Path to SSL keystore file | -| ssl.keystore.type | jks | | Type of SSL keystore | -| ssl.truststore.password | *empty* | | Password used to encrypt truststore | -| ssl.truststore.path | *empty* | 2.0.0 | Path to SSL truststore file | -| ssl.truststore.type | jks | | Type of SSL truststore | -| ssl.use.jsse | false | | Use JSSE system properties to configure SSL | -| sasl.enabled | false | | Enable SASL for client RPC | -| sasl.kerberos.server.primary | accumulo | | Kerberos principal/primary that Accumulo servers use to login | -| sasl.qop | auth | | SASL quality of protection. Valid values are 'auth', 'auth-int', and 'auth-conf' | -| trace.span.receivers | org.apache.accumulo.tracer.ZooTraceClient | | A list of span receiver classes to send trace spans | -| trace.zookeeper.path | /tracers | 2.0.0 | The zookeeper node where tracers are registered | diff --git a/_docs-4/configuration/client-properties3.md b/_docs-4/configuration/client-properties4.md similarity index 99% rename from _docs-4/configuration/client-properties3.md rename to _docs-4/configuration/client-properties4.md index 9fd95f510..d5618f84e 100644 --- a/_docs-4/configuration/client-properties3.md +++ b/_docs-4/configuration/client-properties4.md @@ -1,7 +1,7 @@ --- -title: Client Properties (3.x) +title: Client Properties (4.x) category: configuration -order: 4 +order: 3 --- diff --git a/_docs-4/configuration/metrics4.md b/_docs-4/configuration/metrics4.md new file mode 100644 index 000000000..46da8f233 --- /dev/null +++ b/_docs-4/configuration/metrics4.md @@ -0,0 +1,588 @@ +--- +title: Metrics Documentation (4.x) +category: configuration +order: 5 +--- + + + +Below are the metrics used to monitor various components of Accumulo. Metrics emitted by Accumulo should contain the folowing tags: 'instance.name', 'resource.group', 'process.name', 'host' and 'port'. Metrics emitted by Accumulo may contain additional tags where we think it makes sense to capture per-object metrics, for example on a table or tablet basis in the ScanServer and TabletServer, or on a per-queue basis in the CompactionCoordinator. + +## Table of Contents + +- [General Server Metrics](#general-server-metrics) +- [Compaction Metrics](#compaction-metrics) +- [Compactor Metrics](#compactor-metrics) +- [Fate Metrics](#fate-metrics) +- [Garbage Collection Metrics](#garbage-collection-metrics) +- [Tablet Server Metrics](#tablet-server-metrics) +- [Scan Metrics](#scan-metrics) +- [Scan Server Metrics](#scan-server-metrics) +- [Block Cache Metrics](#block-cache-metrics) +- [Manager Metrics](#manager-metrics) + + +## General Server Metrics + +Metrics that are generated across all server types. + +{::options parse_block_html="true" /} +
+### accumulo.detected.low.memory +**Type:** GAUGE +**Description:** Reports 1 when process memory usage is above the threshold, reports 0 when memory is okay. +
+
+### accumulo.server.idle +**Type:** GAUGE +**Description:** Indicates if the server is idle or not. The value will be 1 when idle and 0 when not idle. +
+
+### accumulo.thrift.execute +**Type:** DISTRIBUTION_SUMMARY +**Description:** Time to execute an RPC request. +
+
+### accumulo.thrift.idle +**Type:** DISTRIBUTION_SUMMARY +**Description:** Time waiting to execute an RPC request. +
+{::options parse_block_html="false" /} + + +## Compaction Metrics + +Metrics specific to compactions, both minor and major. Metrics for major compactions will likely have a 'queue.id' tag. The CompactionCoordinator component in the Manager creates a queue for each CompactionService in the configuration. The 'queue.id' tag may map directly to the name of a Compactor resource group. + +{::options parse_block_html="true" /} +
+### accumulo.compaction.entries.read +**Type:** FUNCTION_COUNTER +**Description:** Number of entries read by all compactions that have run on this compactor (majc) or tserver (minc). +
+
+### accumulo.compaction.entries.written +**Type:** FUNCTION_COUNTER +**Description:** Number of entries written by all compactions that have run on this compactor (majc) or tserver (minc). +
+
+### accumulo.compaction.majc.in_progress +**Type:** GAUGE +**Description:** Indicator of whether a compaction is in-progress (value: 1) or not (value: 0). An in-progress compaction could also be stuck. +
+
+### accumulo.compaction.majc.stuck +**Type:** LONG_TASK_TIMER +**Description:** Number and duration of stuck major compactions. +
+
+### accumulo.compaction.minc.paused +**Type:** COUNTER +**Description:** Number of paused minor compactions. +
+
+### accumulo.compaction.minc.queued +**Type:** TIMER +**Description:** Queued minor compactions time queued. +
+
+### accumulo.compaction.minc.running +**Type:** TIMER +**Description:** Minor compactions time active. +
+
+### accumulo.compaction.minc.stuck +**Type:** LONG_TASK_TIMER +**Description:** Number and duration of stuck minor compactions. +
+
+### accumulo.compaction.queue.count +**Type:** GAUGE +**Description:** Number of priority queues for compaction jobs. +
+
+### accumulo.compaction.queue.jobs.avg.age +**Type:** GAUGE +**Description:** Average age of currently queued jobs in seconds. +
+
+### accumulo.compaction.queue.jobs.dequeued +**Type:** GAUGE +**Description:** Count of dequeued jobs. +
+
+### accumulo.compaction.queue.jobs.exit.time +**Type:** TIMER +**Description:** Tracks time a job spent in the queue before exiting the queue. +
+
+### accumulo.compaction.queue.jobs.max.age +**Type:** GAUGE +**Description:** Maximum age of currently queued jobs in seconds. +
+
+### accumulo.compaction.queue.jobs.min.age +**Type:** GAUGE +**Description:** Minimum age of currently queued jobs in seconds. +
+
+### accumulo.compaction.queue.jobs.priority +**Type:** GAUGE +**Description:** Lowest priority queued job. +
+
+### accumulo.compaction.queue.jobs.queued +**Type:** GAUGE +**Description:** Count of queued jobs. +
+
+### accumulo.compaction.queue.jobs.rejected +**Type:** GAUGE +**Description:** Count of rejected jobs. +
+
+### accumulo.compaction.queue.jobs.size +**Type:** GAUGE +**Description:** Size of queued jobs in bytes. +
+
+### accumulo.compaction.svc.misconfigured +**Type:** GAUGE +**Description:** A value of 1 indicates a misconfiguration in the compaction service, while a value of 0 indicates that the configuration is valid. +
+
+### accumulo.minc.queued +**Type:** GAUGE +**Description:** Number of queued minor compactions. +
+
+### accumulo.minc.running +**Type:** GAUGE +**Description:** Number of active minor compactions. +
+
+### accumulo.minc.total +**Type:** GAUGE +**Description:** Total number of minor compactions performed. +
+{::options parse_block_html="false" /} + + +## Compactor Metrics + +Metrics that are generated by the Compactor processes. + +{::options parse_block_html="true" /} +
+### accumulo.compaction.majc.paused +**Type:** COUNTER +**Description:** Number of paused major compactions. +
+{::options parse_block_html="false" /} + + +## Fate Metrics + +Metrics that are generated by the Fate component in the Manager process. + +{::options parse_block_html="true" /} +
+### accumulo.fate.errors +**Type:** GAUGE +**Description:** Count of errors that occurred when attempting to gather fate metrics. +
+
+### accumulo.fate.ops +**Type:** GAUGE +**Description:** Number of all the current FATE ops in any state. +
+
+### accumulo.fate.ops.activity +**Type:** GAUGE +**Description:** Count of the total number of times fate operations are added, updated, and removed. +
+
+### accumulo.fate.ops.in.progress.by.type +**Type:** GAUGE +**Description:** Number of FATE operations in progress. The op type is designated by the `op.type` tag. +
+
+### accumulo.fate.tx +**Type:** GAUGE +**Description:** The state is now in a tag (e.g., state=new, state=in.progress, state=failed, etc.). +
+{::options parse_block_html="false" /} + + +## Garbage Collection Metrics + +Metrics that are generated by the Garbage Collector process. + +{::options parse_block_html="true" /} +
+### accumulo.gc.candidates +**Type:** GAUGE +**Description:** Number of files that are candidates for deletion. +
+
+### accumulo.gc.deleted +**Type:** GAUGE +**Description:** Number of candidate files deleted. +
+
+### accumulo.gc.errors +**Type:** GAUGE +**Description:** Number of candidate deletion errors. +
+
+### accumulo.gc.finished +**Type:** GAUGE +**Description:** Timestamp GC file collect cycle finished. +
+
+### accumulo.gc.in.use +**Type:** GAUGE +**Description:** Number of candidate files still in use. +
+
+### accumulo.gc.post.op.duration +**Type:** GAUGE +**Description:** GC metadata table post operation duration in milliseconds. +
+
+### accumulo.gc.run.cycle +**Type:** GAUGE +**Description:** Count of gc cycle runs. Value is reset on process start. +
+
+### accumulo.gc.started +**Type:** GAUGE +**Description:** Timestamp GC file collection cycle started. +
+
+### accumulo.gc.wal.candidates +**Type:** GAUGE +**Description:** Number of files that are candidates for deletion. +
+
+### accumulo.gc.wal.deleted +**Type:** GAUGE +**Description:** Number of candidate wal files deleted. +
+
+### accumulo.gc.wal.errors +**Type:** GAUGE +**Description:** Number candidate wal file deletion errors. +
+
+### accumulo.gc.wal.finished +**Type:** GAUGE +**Description:** Timestamp GC WAL collect cycle finished. +
+
+### accumulo.gc.wal.in.use +**Type:** GAUGE +**Description:** Number of wal file candidates that are still in use. +
+
+### accumulo.gc.wal.started +**Type:** GAUGE +**Description:** Timestamp GC WAL collection cycle started. +
+{::options parse_block_html="false" /} + + +## Tablet Server Metrics + +Metrics that are generated by the TabletServer processes. + +{::options parse_block_html="true" /} +
+### accumulo.ingest.bytes +**Type:** GAUGE +**Description:** Ingest byte count. The rate can be derived from this metric. +
+
+### accumulo.ingest.entries +**Type:** GAUGE +**Description:** Ingest entry (a key/value) count. The rate can be derived from this metric. +
+
+### accumulo.ingest.hold +**Type:** GAUGE +**Description:** Duration for which commits have been held in milliseconds. +
+
+### accumulo.tablets.assignments.warning +**Type:** GAUGE +**Description:** Number of tablet assignments that are taking longer than the configured warning duration. +
+
+### accumulo.tablets.files +**Type:** GAUGE +**Description:** Number of files per tablet. +
+
+### accumulo.tablets.ondemand.online +**Type:** GAUGE +**Description:** Number of online on-demand tablets +
+
+### accumulo.tablets.ondemand.unloaded.lowmem +**Type:** GAUGE +**Description:** Number of online on-demand tablets unloaded due to low memory +
+
+### accumulo.tablets.online +**Type:** GAUGE +**Description:** Number of online tablets. +
+
+### accumulo.tablets.opening +**Type:** GAUGE +**Description:** Number of opening tablets. +
+
+### accumulo.tablets.unopened +**Type:** GAUGE +**Description:** Number of unopened tablets. +
+
+### accumulo.tserver.entries +**Type:** GAUGE +**Description:** Number of entries assigned to a TabletServer. +
+
+### accumulo.tserver.entries.mem +**Type:** GAUGE +**Description:** Number of entries in memory. +
+
+### accumulo.updates.check +**Type:** TIMER +**Description:** Average time taken for conditional mutation to check conditions. +
+
+### accumulo.updates.commit +**Type:** TIMER +**Description:** Average time taken to commit a mutation. +
+
+### accumulo.updates.commit.prep +**Type:** TIMER +**Description:** Average time taken to prepare to commit a single mutation. +
+
+### accumulo.updates.error +**Type:** GAUGE +**Description:** Count of errors during tablet updates. Type/reason for error is stored in the `type` tag (e.g., type=permission, type=unknown.tablet, type=constraint.violation). +
+
+### accumulo.updates.lock +**Type:** TIMER +**Description:** Average time taken for conditional mutation to get a row lock. +
+
+### accumulo.updates.mutation.arrays.size +**Type:** DISTRIBUTION_SUMMARY +**Description:** Batch size of mutations from client. +
+
+### accumulo.updates.walog.write +**Type:** TIMER +**Description:** Time taken to write a batch of mutations to WAL. +
+{::options parse_block_html="false" /} + + +## Scan Metrics + +Metrics specific to scans, which can be executed in the ScanServer or the TabletServer. + +{::options parse_block_html="true" /} +
+### accumulo.scan.busy.timeout.count +**Type:** COUNTER +**Description:** Count of the scans where a busy timeout happened. +
+
+### accumulo.scan.close +**Type:** COUNTER +**Description:** Number of calls to close a scan or multiscan. +
+
+### accumulo.scan.continue +**Type:** COUNTER +**Description:** Number of calls to continue a scan or multiscan. +
+
+### accumulo.scan.files.open +**Type:** GAUGE +**Description:** Number of files open for scans. +
+
+### accumulo.scan.paused.for.memory +**Type:** COUNTER +**Description:** Count of scans paused due to server being low on memory. +
+
+### accumulo.scan.queries +**Type:** GAUGE +**Description:** Number of queries made during scans. +
+
+### accumulo.scan.query.results +**Type:** GAUGE +**Description:** Query count. The rate can be derived from this metric. +
+
+### accumulo.scan.query.results.bytes +**Type:** GAUGE +**Description:** Query byte count. The rate can be derived from this metric. +
+
+### accumulo.scan.query.scanned.entries +**Type:** GAUGE +**Description:** Count of scanned entries. The rate can be derived from this metric. +
+
+### accumulo.scan.result +**Type:** GAUGE +**Description:** Results per scan. +
+
+### accumulo.scan.return.early.for.memory +**Type:** COUNTER +**Description:** Count of scans that returned results early due to server being low on memory. +
+
+### accumulo.scan.start +**Type:** COUNTER +**Description:** Number of calls to start a scan or multiscan. +
+
+### accumulo.scan.times +**Type:** TIMER +**Description:** Scan session lifetime (creation to close). +
+
+### accumulo.scan.yields +**Type:** GAUGE +**Description:** Counts scans that have yielded. +
+
+### accumulo.scan.zombie.threads +**Type:** GAUGE +**Description:** Number of scan threads that have no associated client session. +
+{::options parse_block_html="false" /} + + +## Scan Server Metrics + +Metrics that are generated by the ScanServer processes. + +{::options parse_block_html="true" /} +
+### accumulo.scan.reservation.conflict.count +**Type:** COUNTER +**Description:** Count of instances where file reservation attempts for scans encountered conflicts. +
+
+### accumulo.scan.reservation.total.timer +**Type:** TIMER +**Description:** Time to reserve a tablet's files for scan. +
+
+### accumulo.scan.reservation.writeout.timer +**Type:** TIMER +**Description:** Time to write out a tablets file reservations for scan. +
+
+### accumulo.scan.tablet.metadata.cache +**Type:** CACHE +**Description:** Scan server tablet cache metrics. +
+{::options parse_block_html="false" /} + + +## Block Cache Metrics + +Metrics specific to RFile block cache usage in the ScanServer and TabletServer processes. + +{::options parse_block_html="true" /} +
+### accumulo.blockcache.data.evictioncount +**Type:** FUNCTION_COUNTER +**Description:** Data block cache eviction count. +
+
+### accumulo.blockcache.data.hitcount +**Type:** FUNCTION_COUNTER +**Description:** Data block cache hit count. +
+
+### accumulo.blockcache.data.requestcount +**Type:** FUNCTION_COUNTER +**Description:** Data block cache request count. +
+
+### accumulo.blockcache.index.evictioncount +**Type:** FUNCTION_COUNTER +**Description:** Index block cache eviction count. +
+
+### accumulo.blockcache.index.hitcount +**Type:** FUNCTION_COUNTER +**Description:** Index block cache hit count. +
+
+### accumulo.blockcache.index.requestcount +**Type:** FUNCTION_COUNTER +**Description:** Index block cache request count. +
+
+### accumulo.blockcache.summary.evictioncount +**Type:** FUNCTION_COUNTER +**Description:** Summary block cache eviction count. +
+
+### accumulo.blockcache.summary.hitcount +**Type:** FUNCTION_COUNTER +**Description:** Summary block cache hit count. +
+
+### accumulo.blockcache.summary.requestcount +**Type:** FUNCTION_COUNTER +**Description:** Summary block cache request count. +
+{::options parse_block_html="false" /} + + +## Manager Metrics + +Metrics that are generated by the Manager process. + +{::options parse_block_html="true" /} +
+### accumulo.balancer.migrations.needed +**Type:** GAUGE +**Description:** The number of migrations that need to complete before the system is balanced. +
+
+### accumulo.tabletmgmt.meta.errors +**Type:** GAUGE +**Description:** Error count encountered by the TabletGroupWatcher for the META data level. +
+
+### accumulo.tabletmgmt.root.errors +**Type:** GAUGE +**Description:** Error count encountered by the TabletGroupWatcher for the ROOT data level. +
+
+### accumulo.tabletmgmt.user.errors +**Type:** GAUGE +**Description:** Error count encountered by the TabletGroupWatcher for the USER data level. +
+{::options parse_block_html="false" /} + diff --git a/_docs-4/configuration/server-properties.md b/_docs-4/configuration/server-properties.md deleted file mode 100644 index 167bf52bf..000000000 --- a/_docs-4/configuration/server-properties.md +++ /dev/null @@ -1,377 +0,0 @@ ---- -title: Server Properties (2.x) -category: configuration -order: 5 ---- - - - -Below are properties set in `accumulo.properties` or the Accumulo shell that configure Accumulo servers (i.e. tablet server, manager, etc). Properties labeled 'Experimental' should not be considered stable and have a higher risk of changing in the future. - -| Property | Description | -|--------------|-------------| -| **compaction.coordinator.*** | **Experimental**
**Available since:** 2.1.0
Properties in this category affect the behavior of the accumulo compaction coordinator server. | -| compaction.coordinator.compaction.finalizer.check.interval | **Experimental**
**Available since:** 2.1.0
The interval at which to check for external compaction final state markers in the metadata table.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `60s` | -| compaction.coordinator.compaction.finalizer.threads.maximum | **Experimental**
**Available since:** 2.1.0
The maximum number of threads to use for notifying tablet servers that an external compaction has completed.
**type:** COUNT, **zk mutable:** no, **default value:** `5` | -| compaction.coordinator.compactor.dead.check.interval | **Experimental**
**Available since:** 2.1.0
The interval at which to check for dead compactors.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `5m` | -| compaction.coordinator.port.client | **Experimental**
**Available since:** 2.1.0
The port used for handling Thrift client connections on the compaction coordinator server.
**type:** PORT, **zk mutable:** no, **default value:** `9132` | -| compaction.coordinator.port.search | **Experimental**
**Available since:** 2.1.0
If the ports above are in use, search higher ports until one is available.
**type:** BOOLEAN, **zk mutable:** no, **default value:** `false` | -| compaction.coordinator.threadcheck.time | **Experimental**
**Available since:** 2.1.0
The time between adjustments of the server thread pool.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `1s` | -| compaction.coordinator.threads.minimum | **Experimental**
**Available since:** 2.1.0
The minimum number of threads to use to handle incoming requests.
**type:** COUNT, **zk mutable:** no, **default value:** `1` | -| compaction.coordinator.threads.timeout | **Experimental**
**Available since:** 2.1.0
The time after which incoming request threads terminate with no work available. Zero (0) will keep the threads alive indefinitely.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `0s` | -| compaction.coordinator.tserver.check.interval | **Experimental**
**Available since:** 2.1.0
The interval at which to check the tservers for external compactions.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `1m` | -| **compactor.*** | **Experimental**
**Available since:** 2.1.0
Properties in this category affect the behavior of the accumulo compactor server. | -| compactor.port.client | **Experimental**
**Available since:** 2.1.0
The port used for handling client connections on the compactor servers.
**type:** PORT, **zk mutable:** no, **default value:** `9133` | -| compactor.port.search | **Experimental**
**Available since:** 2.1.0
If the compactor.port.client is in use, search higher ports until one is available.
**type:** BOOLEAN, **zk mutable:** no, **default value:** `false` | -| compactor.threadcheck.time | **Experimental**
**Available since:** 2.1.0
The time between adjustments of the server thread pool.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `1s` | -| compactor.threads.minimum | **Experimental**
**Available since:** 2.1.0
The minimum number of threads to use to handle incoming requests.
**type:** COUNT, **zk mutable:** no, **default value:** `1` | -| compactor.threads.timeout | **Experimental**
**Available since:** 2.1.0
The time after which incoming request threads terminate with no work available. Zero (0) will keep the threads alive indefinitely.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `0s` | -| compactor.wait.time.job.max | **Experimental**
**Available since:** 2.1.3
Compactors do exponential backoff when their request for work repeatedly come back empty. This is the maximum amount of time to wait between checks for the next compaction job.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `5m` | -| compactor.wait.time.job.min | **Experimental**
**Available since:** 2.1.3
The minimum amount of time to wait between checks for the next compaction job, backing offexponentially until COMPACTOR_MAX_JOB_WAIT_TIME is reached.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `1s` | -| **gc.*** | **Available since:** 1.3.5
Properties in this category affect the behavior of the accumulo garbage collector. | -| gc.candidate.batch.size | **Available since:** 2.1.0
The amount of memory used as the batch size for garbage collection.
**type:** MEMORY, **zk mutable:** yes, **default value:** `50%` | -| gc.cycle.delay | **Available since:** 1.3.5
Time between garbage collection cycles. In each cycle, old RFiles or write-ahead logs no longer in use are removed from the filesystem.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `5m` | -| gc.cycle.start | **Available since:** 1.3.5
Time to wait before attempting to garbage collect any old RFiles or write-ahead logs.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `30s` | -| gc.port.client | **Available since:** 1.3.5
The listening port for the garbage collector's monitor service.
**type:** PORT, **zk mutable:** yes but requires restart of the gc, **default value:** `9998` | -| gc.post.metadata.action | **Available since:** 1.10.0
When the gc runs it can make a lot of changes to the metadata, on completion, to force the changes to be written to disk, the metadata and root tables can be flushed and possibly compacted. Legal values are: compact - which both flushes and compacts the metadata; flush - which flushes only (compactions may be triggered if required); or none.
**type:** GC_POST_ACTION, **zk mutable:** yes, **default value:** `flush` | -| gc.remove.in.use.candidates | **Experimental**
**Available since:** 2.1.3
GC will remove deletion candidates that are in-use from the metadata location. This is expected to increase the speed of subsequent GC runs.
**type:** BOOLEAN, **zk mutable:** yes, **default value:** `false` | -| gc.safemode | **Available since:** 2.1.0
Provides listing of files to be deleted but does not delete any files.
**type:** BOOLEAN, **zk mutable:** yes, **default value:** `false` | -| gc.threads.delete | **Available since:** 1.3.5
The number of threads used to delete RFiles and write-ahead logs.
**type:** COUNT, **zk mutable:** yes, **default value:** `16` | -| ~~ gc.trace.percent~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Percent of gc cycles to trace.~~
~~**type:** FRACTION~~, ~~**zk mutable:** yes~~, ~~**default value:** `0.01`~~ | -| ~~ gc.trash.ignore~~ | **Available since:** 1.5.0
*Deprecated since:* 2.1.1
~~Do not use the Trash, even if it is configured.~~
~~**type:** BOOLEAN~~, ~~**zk mutable:** yes~~, ~~**default value:** `false`~~ | -| **general.*** | **Available since:** 1.3.5
Properties in this category affect the behavior of accumulo overall, but do not have to be consistent throughout a cloud. | -| ~~ general.classpaths~~ | **Available since:** 1.3.5
*Deprecated since:* 2.0.0
~~The class path should instead be configured by the launch environment (for example, accumulo-env.sh). A list of all of the places to look for a class. Order does matter, as it will look for the jar starting in the first location to the last. Supports full regex on filename alone.~~
~~**type:** STRING~~, ~~**zk mutable:** no~~, ~~**default value:** empty~~ | -| general.context.class.loader.factory | **Available since:** 2.1.0
Name of classloader factory to be used to create classloaders for named contexts, such as per-table contexts set by `table.class.loader.context`.
**type:** CLASSNAME, **zk mutable:** no, **default value:** empty | -| **general.custom.*** | **Available since:** 2.0.0
Prefix to be used for user defined system-wide properties. This may be particularly useful for system-wide configuration for various user-implementations of pluggable Accumulo features, such as the balancer or volume chooser. | -| general.delegation.token.lifetime | **Available since:** 1.7.0
The length of time that delegation tokens and secret keys are valid.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `7d` | -| general.delegation.token.update.interval | **Available since:** 1.7.0
The length of time between generation of new secret keys.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `1d` | -| ~~ general.dynamic.classpaths~~ | **Available since:** 1.3.5
*Deprecated since:* 2.0.0
~~A list of all of the places where changes in jars or classes will force a reload of the classloader. Built-in dynamic class loading will be removed in a future version. If this is needed, consider overriding the Java system class loader with one that has this feature (https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html#getSystemClassLoader--). Additionally, this property no longer does property interpolation of environment variables, such as '$ACCUMULO_HOME'. Use commons-configuration syntax,'${env:ACCUMULO_HOME}' instead.~~
~~**type:** STRING~~, ~~**zk mutable:** no~~, ~~**default value:** empty~~ | -| general.file.name.allocation.batch.size.max | **Available since:** 2.1.3
The maximum number of filenames that will be allocated from ZooKeeper at a time.
**type:** COUNT, **zk mutable:** yes, **default value:** `200` | -| general.file.name.allocation.batch.size.min | **Available since:** 2.1.3
The minimum number of filenames that will be allocated from ZooKeeper at a time.
**type:** COUNT, **zk mutable:** yes, **default value:** `100` | -| general.kerberos.keytab | **Available since:** 1.4.1
Path to the kerberos keytab to use. Leave blank if not using kerberoized hdfs.
**type:** PATH, **zk mutable:** no, **default value:** empty | -| general.kerberos.principal | **Available since:** 1.4.1
Name of the kerberos principal to use. _HOST will automatically be replaced by the machines hostname in the hostname portion of the principal. Leave blank if not using kerberoized hdfs.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| general.kerberos.renewal.period | **Available since:** 1.6.5
The amount of time between attempts to perform Kerberos ticket renewals. This does not equate to how often tickets are actually renewed (which is performed at 80% of the ticket lifetime).
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `30s` | -| general.max.scanner.retry.period | **Available since:** 1.7.3
The maximum amount of time that a Scanner should wait before retrying a failed RPC.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `5s` | -| general.metrics.process.idle | **Available since:** 2.1.3
Amount of time a process must be idle before it is considered to be idle by the metrics system.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `5m` | -| general.micrometer.enabled | **Available since:** 2.1.0
Enables metrics functionality using Micrometer.
**type:** BOOLEAN, **zk mutable:** no, **default value:** `false` | -| general.micrometer.factory | **Available since:** 2.1.0
A comma separated list of one or more class names that implements org.apache.accumulo.core.spi.metrics.MeterRegistryFactory. Prior to 2.1.3 this was a single value and the default was an empty string. In 2.1.3 the default was changed and it now can accept multiple class names. The metrics spi was introduced in 2.1.3, the deprecated factory is org.apache.accumulo.core.metrics.MeterRegistryFactory.
**type:** CLASSNAMELIST, **zk mutable:** no, **default value:** `org.apache.accumulo.core.spi.metrics.LoggingMeterRegistryFactory` | -| general.micrometer.jvm.metrics.enabled | **Available since:** 2.1.0
Enables JVM metrics functionality using Micrometer.
**type:** BOOLEAN, **zk mutable:** no, **default value:** `false` | -| general.opentelemetry.enabled | **Experimental**
**Available since:** 2.1.0
Enables tracing functionality using OpenTelemetry (assuming OpenTelemetry is configured).
**type:** BOOLEAN, **zk mutable:** no, **default value:** `false` | -| general.rpc.server.type | **Experimental**
**Available since:** 1.7.0
Type of Thrift server to instantiate, see org.apache.accumulo.server.rpc.ThriftServerType for more information. Only useful for benchmarking thrift servers.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| general.rpc.timeout | **Available since:** 1.3.5
Time to wait on I/O for simple, short RPC calls.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `120s` | -| general.security.credential.provider.paths | **Available since:** 1.6.1
Comma-separated list of paths to CredentialProviders.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| ~~ general.server.message.size.max~~ | **Available since:** 1.5.0
*Deprecated since:* 2.1.3
*Replaced by:* rpc.message.size.max
~~The maximum size of a message that can be sent to a server.~~
~~**type:** BYTES~~, ~~**zk mutable:** no~~, ~~**default value:** `1G`~~ | -| ~~ general.server.simpletimer.threadpool.size~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
*Replaced by:* general.server.threadpool.size
~~The number of threads to use for server-internal scheduled tasks.~~
~~**type:** COUNT~~, ~~**zk mutable:** no~~, ~~**default value:** `1`~~ | -| general.server.threadpool.size | **Available since:** 2.1.0
The number of threads to use for server-internal scheduled tasks.
**type:** COUNT, **zk mutable:** no, **default value:** `1` | -| ~~ general.vfs.cache.dir~~ | **Available since:** 1.5.0
*Deprecated since:* 2.1.0
~~The base directory to use for the vfs cache. The actual cached files will be located in a subdirectory, `accumulo-vfs-cache--${user.name}`, where `` is determined by the JVM's internal management engine. The cache will keep a soft reference to all of the classes loaded in the VM. This should be on local disk on each node with sufficient space.~~
~~**type:** ABSOLUTEPATH~~, ~~**zk mutable:** no~~, ~~**default value:** `${java.io.tmpdir}`~~ | -| ~~ general.vfs.classpaths~~ | **Available since:** 1.5.0
*Deprecated since:* 2.1.0
~~Configuration for a system level vfs classloader. Accumulo jar can be configured here and loaded out of HDFS.~~
~~**type:** STRING~~, ~~**zk mutable:** no~~, ~~**default value:** empty~~ | -| ~~ **general.vfs.context.classpath.***~~ | **Available since:** 1.5.0
*Deprecated since:* 2.1.0
~~Properties in this category are define a classpath. These properties start with the category prefix, followed by a context name. The value is a comma separated list of URIs. Supports full regex on filename alone. For example, general.vfs.context.classpath.cx1=hdfs://nn1:9902/mylibdir/*.jar. You can enable post delegation for a context, which will load classes from the context first instead of the parent first. Do this by setting `general.vfs.context.classpath..delegation=post`, where `` is your context name. If delegation is not specified, it defaults to loading from parent classloader first.~~ | -| general.volume.chooser | **Experimental**
**Available since:** 1.6.0
The class that will be used to select which volume will be used to create new files.
**type:** CLASSNAME, **zk mutable:** no, **default value:** {% jlink -f org.apache.accumulo.core.spi.fs.RandomVolumeChooser %} | -| **instance.*** | **Available since:** 1.3.5
Properties in this category must be consistent throughout a cloud. This is enforced and servers won't be able to communicate if these differ. | -| **instance.crypto.opts.*** | **Experimental**
**Available since:** 2.0.0
Properties related to on-disk file encryption. | -| instance.crypto.opts.factory | **Experimental**
**Available since:** 2.1.0
The class which provides crypto services for on-disk file encryption. The default does nothing. To enable encryption, replace this classname with an implementation of theorg.apache.accumulo.core.spi.crypto.CryptoFactory interface.
**type:** CLASSNAME, **zk mutable:** no, **default value:** {% jlink -f org.apache.accumulo.core.spi.crypto.NoCryptoServiceFactory %} | -| **instance.crypto.opts.sensitive.*** | **Experimental**
**Available since:** 2.0.0
Sensitive properties related to on-disk file encryption. | -| ~~ instance.dfs.dir~~ | **Available since:** 1.3.5
*Deprecated since:* 1.6.0
*Replaced by:* instance.volumes
~~HDFS directory in which accumulo instance will run. Do not change after accumulo is initialized.~~
~~**type:** ABSOLUTEPATH~~, ~~**zk mutable:** no~~, ~~**default value:** `/accumulo`~~ | -| ~~ instance.dfs.uri~~ | **Available since:** 1.4.0
*Deprecated since:* 1.6.0
*Replaced by:* instance.volumes
~~A url accumulo should use to connect to DFS. If this is empty, accumulo will obtain this information from the hadoop configuration. This property will only be used when creating new files if instance.volumes is empty. After an upgrade to 1.6.0 Accumulo will start using absolute paths to reference files. Files created before a 1.6.0 upgrade are referenced via relative paths. Relative paths will always be resolved using this config (if empty using the hadoop config).~~
~~**type:** URI~~, ~~**zk mutable:** no~~, ~~**default value:** empty~~ | -| instance.rpc.sasl.allowed.host.impersonation | **Available since:** 1.7.1
One-line configuration property controlling the network locations (hostnames) that are allowed to impersonate other users.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| instance.rpc.sasl.allowed.user.impersonation | **Available since:** 1.7.1
One-line configuration property controlling what users are allowed to impersonate other users.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| instance.rpc.sasl.enabled | **Available since:** 1.7.0
Configures Thrift RPCs to require SASL with GSSAPI which supports Kerberos authentication. Mutually exclusive with SSL RPC configuration.
**type:** BOOLEAN, **zk mutable:** no, **default value:** `false` | -| instance.rpc.ssl.clientAuth | **Available since:** 1.6.0
Require clients to present certs signed by a trusted root.
**type:** BOOLEAN, **zk mutable:** no, **default value:** `false` | -| instance.rpc.ssl.enabled | **Available since:** 1.6.0
Use SSL for socket connections from clients and among accumulo services. Mutually exclusive with SASL RPC configuration.
**type:** BOOLEAN, **zk mutable:** no, **default value:** `false` | -| instance.secret | **Available since:** 1.3.5
A secret unique to a given instance that all servers must know in order to communicate with one another. It should be changed prior to the initialization of Accumulo. To change it after Accumulo has been initialized, use the ChangeSecret tool and then update accumulo.properties everywhere. Before using the ChangeSecret tool, make sure Accumulo is not running and you are logged in as the user that controls Accumulo files in HDFS. To use the ChangeSecret tool, run the command: `./bin/accumulo org.apache.accumulo.server.util.ChangeSecret`.
**type:** STRING, **zk mutable:** no, **default value:** `DEFAULT` | -| instance.security.authenticator | **Experimental**
**Available since:** 1.5.0
The authenticator class that accumulo will use to determine if a user has privilege to perform an action.
**type:** CLASSNAME, **zk mutable:** no, **default value:** {% jlink -f org.apache.accumulo.server.security.handler.ZKAuthenticator %} | -| instance.security.authorizor | **Experimental**
**Available since:** 1.5.0
The authorizor class that accumulo will use to determine what labels a user has privilege to see.
**type:** CLASSNAME, **zk mutable:** no, **default value:** {% jlink -f org.apache.accumulo.server.security.handler.ZKAuthorizor %} | -| instance.security.permissionHandler | **Experimental**
**Available since:** 1.5.0
The permission handler class that accumulo will use to determine if a user has privilege to perform an action.
**type:** CLASSNAME, **zk mutable:** no, **default value:** {% jlink -f org.apache.accumulo.server.security.handler.ZKPermHandler %} | -| **instance.volume.config.*** | **Available since:** 2.1.1
Properties in this category are used to provide volume specific overrides to the general filesystem client configuration. Properties using this prefix should be in the form 'instance.volume.config..=. An example: 'instance.volume.config.hdfs://namespace-a:8020/accumulo.dfs.client.hedged.read.threadpool.size=10'. Note that when specifying property names that contain colons in the properties files that the colons need to be escaped with a backslash. | -| instance.volumes | **Available since:** 1.6.0
A comma separated list of dfs uris to use. Files will be stored across these filesystems. In some situations, the first volume in this list may be treated differently, such as being preferred for writing out temporary files (for example, when creating a pre-split table). After adding uris to this list, run 'accumulo init --add-volume' and then restart tservers. If entries are removed from this list then tservers will need to be restarted. After a uri is removed from the list Accumulo will not create new files in that location, however Accumulo can still reference files created at that location before the config change. To use a comma or other reserved characters in a URI use standard URI hex encoding. For example replace commas with %2C.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| instance.volumes.replacements | **Available since:** 1.6.0
Since accumulo stores absolute URIs changing the location of a namenode could prevent Accumulo from starting. The property helps deal with that situation. Provide a comma separated list of uri replacement pairs here if a namenode location changes. Each pair should be separated with a space. For example, if hdfs://nn1 was replaced with hdfs://nnA and hdfs://nn2 was replaced with hdfs://nnB, then set this property to 'hdfs://nn1 hdfs://nnA,hdfs://nn2 hdfs://nnB' Replacements must be configured for use. To see which volumes are currently in use, run 'accumulo admin volumes -l'. To use a comma or other reserved characters in a URI use standard URI hex encoding. For example replace commas with %2C.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| instance.volumes.upgrade.relative | **Available since:** 2.1.0
The volume dfs uri containing relative tablet file paths. Relative paths may exist in the metadata from versions prior to 1.6. This property is only required if a relative path is detected during the upgrade process and will only be used once.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| instance.zookeeper.host | **Available since:** 1.3.5
Comma separated list of zookeeper servers.
**type:** HOSTLIST, **zk mutable:** no, **default value:** `localhost:2181` | -| instance.zookeeper.timeout | **Available since:** 1.3.5
Zookeeper session timeout; max value when represented as milliseconds should be no larger than 2147483647.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `30s` | -| **manager.*** | **Available since:** 2.1.0
Properties in this category affect the behavior of the manager server. Since 2.1.0, all properties in this category replace the old `master.*` names. | -| ~~ manager.bulk.rename.threadpool.size~~ | **Available since:** 2.1.0 (since 1.7.0 as *master.bulk.rename.threadpool.size*)
*Deprecated since:* 2.1.0
*Replaced by:* manager.rename.threadpool.size
~~The number of threads to use when moving user files to bulk ingest directories under accumulo control.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `20`~~ | -| manager.bulk.retries | **Available since:** 2.1.0 (since 1.4.0 as *master.bulk.retries*)
The number of attempts to bulk import a RFile before giving up.
**type:** COUNT, **zk mutable:** yes, **default value:** `3` | -| manager.bulk.threadpool.size | **Available since:** 2.1.0 (since 1.4.0 as *master.bulk.threadpool.size*)
The number of threads to use when coordinating a bulk import.
**type:** COUNT, **zk mutable:** yes, **default value:** `5` | -| manager.bulk.threadpool.timeout | **Available since:** 2.1.0
The time after which bulk import threads terminate with no work available. Zero (0) will keep the threads alive indefinitely.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `0s` | -| manager.bulk.timeout | **Available since:** 2.1.0 (since 1.4.3 as *master.bulk.timeout*)
The time to wait for a tablet server to process a bulk import request.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `5m` | -| manager.bulk.tserver.regex | **Available since:** 2.1.0 (since 2.0.0 as *master.bulk.tserver.regex*)
Regular expression that defines the set of Tablet Servers that will perform bulk imports.
**type:** STRING, **zk mutable:** yes, **default value:** empty | -| manager.fate.metrics.min.update.interval | **Available since:** 2.1.0 (since 1.9.3 as *master.fate.metrics.min.update.interval*)
Limit calls from metric sinks to zookeeper to update interval.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `60s` | -| manager.fate.threadpool.size | **Available since:** 2.1.0 (since 1.4.3 as *master.fate.threadpool.size*)
The number of threads used to run fault-tolerant executions (FATE). These are primarily table operations like merge.
**type:** COUNT, **zk mutable:** yes, **default value:** `4` | -| manager.lease.recovery.interval | **Available since:** 2.1.0 (since 1.5.0 as *master.lease.recovery.interval*)
The amount of time to wait after requesting a write-ahead log to be recovered.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `5s` | -| manager.metadata.suspendable | **Available since:** 2.1.0 (since 1.8.0 as *master.metadata.suspendable*)
Allow tablets for the accumulo.metadata table to be suspended via table.suspend.duration.
**type:** BOOLEAN, **zk mutable:** yes, **default value:** `false` | -| manager.port.client | **Available since:** 2.1.0 (since 1.3.5 as *master.port.client*)
The port used for handling client connections on the manager.
**type:** PORT, **zk mutable:** yes but requires restart of the manager, **default value:** `9999` | -| manager.recovery.delay | **Available since:** 2.1.0 (since 1.5.0 as *master.recovery.delay*)
When a tablet server's lock is deleted, it takes time for it to completely quit. This delay gives it time before log recoveries begin.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `10s` | -| manager.recovery.wal.cache.time | **Available since:** 2.1.2
Amount of time that the existence of recovery write-ahead logs is cached.
**type:** TIMEDURATION, **zk mutable:** yes but requires restart of the manager, **default value:** `15s` | -| manager.rename.threadpool.size | **Available since:** 2.1.0
The number of threads to use when renaming user files during table import or bulk ingest.
**type:** COUNT, **zk mutable:** yes, **default value:** `20` | -| ~~ manager.replication.coordinator.minthreads~~ | **Available since:** 2.1.0 (since 1.7.0 as *master.replication.coordinator.minthreads*)
*Deprecated since:* 2.1.0
~~Minimum number of threads dedicated to answering coordinator requests.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `4`~~ | -| ~~ manager.replication.coordinator.port~~ | **Available since:** 2.1.0 (since 1.7.0 as *master.replication.coordinator.port*)
*Deprecated since:* 2.1.0
~~Port for the replication coordinator service.~~
~~**type:** PORT~~, ~~**zk mutable:** yes~~, ~~**default value:** `10001`~~ | -| ~~ manager.replication.coordinator.threadcheck.time~~ | **Available since:** 2.1.0 (since 1.7.0 as *master.replication.coordinator.threadcheck.time*)
*Deprecated since:* 2.1.0
~~The time between adjustments of the coordinator thread pool.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `5s`~~ | -| ~~ manager.replication.status.scan.interval~~ | **Available since:** 2.1.0 (since 1.7.0 as *master.replication.status.scan.interval*)
*Deprecated since:* 2.1.0
~~Amount of time to sleep before scanning the status section of the replication table for new data.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `30s`~~ | -| manager.server.threadcheck.time | **Available since:** 2.1.0 (since 1.4.0 as *master.server.threadcheck.time*)
The time between adjustments of the server thread pool.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `1s` | -| manager.server.threads.minimum | **Available since:** 2.1.0 (since 1.4.0 as *master.server.threads.minimum*)
The minimum number of threads to use to handle incoming requests.
**type:** COUNT, **zk mutable:** yes but requires restart of the manager, **default value:** `20` | -| manager.server.threads.timeout | **Available since:** 2.1.0
The time after which incoming request threads terminate with no work available. Zero (0) will keep the threads alive indefinitely.
**type:** TIMEDURATION, **zk mutable:** yes but requires restart of the manager, **default value:** `0s` | -| manager.startup.tserver.avail.max.wait | **Available since:** 2.1.0 (since 1.10.0 as *master.startup.tserver.avail.max.wait*)
Maximum time manager will wait for tserver available threshold to be reached before continuing. When set to 0 or less, will block indefinitely. Default is 0 to block indefinitely. Only valid when tserver available threshold is set greater than 0.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `0` | -| manager.startup.tserver.avail.min.count | **Available since:** 2.1.0 (since 1.10.0 as *master.startup.tserver.avail.min.count*)
Minimum number of tservers that need to be registered before manager will start tablet assignment - checked at manager initialization, when manager gets lock. When set to 0 or less, no blocking occurs. Default is 0 (disabled) to keep original behaviour.
**type:** COUNT, **zk mutable:** yes, **default value:** `0` | -| manager.status.threadpool.size | **Available since:** 2.1.0 (since 1.8.0 as *master.status.threadpool.size*)
The number of threads to use when fetching the tablet server status for balancing. Zero indicates an unlimited number of threads will be used.
**type:** COUNT, **zk mutable:** yes, **default value:** `0` | -| manager.tablet.balancer | **Available since:** 2.1.0 (since 1.3.5 as *master.tablet.balancer*)
The balancer class that accumulo will use to make tablet assignment and migration decisions.
**type:** CLASSNAME, **zk mutable:** yes, **default value:** {% jlink -f org.apache.accumulo.core.spi.balancer.TableLoadBalancer %} | -| manager.tablet.watcher.interval | **Available since:** 2.1.2
Time to wait between scanning tablet states to identify tablets that need to be assigned, un-assigned, migrated, etc.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `60s` | -| manager.wal.closer.implementation | **Available since:** 2.1.0
A class that implements a mechanism to steal write access to a write-ahead log.
**type:** CLASSNAME, **zk mutable:** yes, **default value:** {% jlink -f org.apache.accumulo.server.manager.recovery.HadoopLogCloser %} | -| ~~ manager.walog.closer.implementation~~ | **Available since:** 2.1.0 (since 1.5.0 as *master.walog.closer.implementation*)
*Deprecated since:* 2.1.0
*Replaced by:* manager.wal.closer.implementation
~~A class that implements a mechanism to steal write access to a write-ahead log.~~
~~**type:** CLASSNAME~~, ~~**zk mutable:** yes~~, ~~**default value:** {% jlink -f org.apache.accumulo.server.manager.recovery.HadoopLogCloser %}~~ | -| ~~ **master.***~~ | **Available since:** 1.3.5
*Deprecated since:* 2.1.0
*Replaced by:* manager.
~~Properties in this category affect the behavior of the manager (formerly named master) server. Since 2.1.0, all properties in this category are deprecated and replaced with corresponding `manager.*` properties. The old `master.*` names can still be used until at release 3.0, but a warning will be emitted. Configuration files should be updated to use the new property names.~~ | -| **monitor.*** | **Available since:** 1.3.5
Properties in this category affect the behavior of the monitor web server. | -| monitor.lock.check.interval | **Available since:** 1.5.1
The amount of time to sleep between checking for the Monitor ZooKeeper lock.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `5s` | -| monitor.port.client | **Available since:** 1.3.5
The listening port for the monitor's http service.
**type:** PORT, **zk mutable:** no, **default value:** `9995` | -| monitor.resources.external | **Available since:** 2.0.0
A JSON Map of Strings. Each String should be an HTML tag of an external resource (JS or CSS) to be imported by the Monitor. Be sure to wrap with CDATA tags. If this value is set, all of the external resources in the `` tag of the Monitor will be replaced with the tags set here. Be sure the jquery tag is first since other scripts will depend on it. The resources that are used by default can be seen in `accumulo/server/monitor/src/main/resources/templates/default.ftl`.
**type:** JSON, **zk mutable:** no, **default value:** empty | -| monitor.ssl.exclude.ciphers | **Available since:** 1.6.1
A comma-separated list of disallowed SSL Ciphers, see monitor.ssl.include.ciphers to allow ciphers.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| monitor.ssl.include.ciphers | **Available since:** 1.6.1
A comma-separated list of allows SSL Ciphers, see monitor.ssl.exclude.ciphers to disallow ciphers.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| monitor.ssl.include.protocols | **Available since:** 1.5.3
A comma-separate list of allowed SSL protocols.
**type:** STRING, **zk mutable:** no, **default value:** `TLSv1.2` | -| monitor.ssl.keyPassword | **Available since:** 1.9.3
Optional: the password for the private key in the keyStore. When not provided, this defaults to the keystore password.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| monitor.ssl.keyStore | **Available since:** 1.5.0
The keystore for enabling monitor SSL.
**type:** PATH, **zk mutable:** no, **default value:** empty | -| monitor.ssl.keyStorePassword | **Available since:** 1.5.0
The keystore password for enabling monitor SSL.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| monitor.ssl.keyStoreType | **Available since:** 1.7.0
Type of SSL keystore.
**type:** STRING, **zk mutable:** no, **default value:** `jks` | -| monitor.ssl.trustStore | **Available since:** 1.5.0
The truststore for enabling monitor SSL.
**type:** PATH, **zk mutable:** no, **default value:** empty | -| monitor.ssl.trustStorePassword | **Available since:** 1.5.0
The truststore password for enabling monitor SSL.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| monitor.ssl.trustStoreType | **Available since:** 1.7.0
Type of SSL truststore.
**type:** STRING, **zk mutable:** no, **default value:** `jks` | -| ~~ **replication.***~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Properties in this category affect the replication of data to other Accumulo instances.~~ | -| ~~ replication.driver.delay~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Amount of time to wait before the replication work loop begins in the manager.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `0s`~~ | -| ~~ replication.max.unit.size~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Maximum size of data to send in a replication message.~~
~~**type:** BYTES~~, ~~**zk mutable:** yes~~, ~~**default value:** `64M`~~ | -| ~~ replication.max.work.queue~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Upper bound of the number of files queued for replication.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `1000`~~ | -| ~~ replication.name~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Name of this cluster with respect to replication. Used to identify this instance from other peers.~~
~~**type:** STRING~~, ~~**zk mutable:** yes~~, ~~**default value:** empty~~ | -| ~~ **replication.peer.***~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Properties in this category control what systems data can be replicated to.~~ | -| ~~ **replication.peer.keytab.***~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~The keytab to use when authenticating with the given peer.~~ | -| ~~ **replication.peer.password.***~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~The password to provide when authenticating with the given peer.~~ | -| ~~ **replication.peer.user.***~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~The username to provide when authenticating with the given peer.~~ | -| ~~ replication.receipt.service.port~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Listen port used by thrift service in tserver listening for replication.~~
~~**type:** PORT~~, ~~**zk mutable:** yes~~, ~~**default value:** `10002`~~ | -| ~~ replication.receiver.min.threads~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Minimum number of threads for replication.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `1`~~ | -| ~~ replication.receiver.threadcheck.time~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~The time between adjustments of the replication thread pool.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `30s`~~ | -| ~~ replication.rpc.timeout~~ | **Available since:** 1.7.4
*Deprecated since:* 2.1.0
~~Amount of time for a single replication RPC call to last before failing the attempt. See replication.work.attempts.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `2m`~~ | -| ~~ replication.trace.percent~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~The sampling percentage to use for replication traces.~~
~~**type:** FRACTION~~, ~~**zk mutable:** yes~~, ~~**default value:** `0.1`~~ | -| ~~ replication.work.assigner~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Replication WorkAssigner implementation to use.~~
~~**type:** CLASSNAME~~, ~~**zk mutable:** yes~~, ~~**default value:** {% jlink -f org.apache.accumulo.manager.replication.UnorderedWorkAssigner %}~~ | -| ~~ replication.work.assignment.sleep~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Amount of time to sleep between replication work assignment.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `30s`~~ | -| ~~ replication.work.attempts~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Number of attempts to try to replicate some data before giving up and letting it naturally be retried later.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `10`~~ | -| ~~ replication.work.processor.delay~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Amount of time to wait before first checking for replication work, not useful outside of tests.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `0s`~~ | -| ~~ replication.work.processor.period~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Amount of time to wait before re-checking for replication work, not useful outside of tests.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `0s`~~ | -| ~~ replication.worker.threads~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Size of the threadpool that each tabletserver devotes to replicating data.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `4`~~ | -| **rpc.*** | **Available since:** 1.6.0
Properties in this category related to the configuration of SSL keys for RPC. See also `instance.ssl.enabled`. | -| rpc.backlog | **Available since:** 2.1.3
Configures the TCP backlog for the server side sockets created by Thrift. This property is not used for SSL type server sockets. A value of zero will use the Thrift default value.
**type:** COUNT, **zk mutable:** no, **default value:** `50` | -| rpc.javax.net.ssl.keyStore | **Available since:** 1.6.0
Path of the keystore file for the server's private SSL key.
**type:** PATH, **zk mutable:** no, **default value:** empty | -| rpc.javax.net.ssl.keyStorePassword | **Available since:** 1.6.0
Password used to encrypt the SSL private keystore. Leave blank to use the Accumulo instance secret.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| rpc.javax.net.ssl.keyStoreType | **Available since:** 1.6.0
Type of SSL keystore.
**type:** STRING, **zk mutable:** no, **default value:** `jks` | -| rpc.javax.net.ssl.trustStore | **Available since:** 1.6.0
Path of the truststore file for the root cert.
**type:** PATH, **zk mutable:** no, **default value:** empty | -| rpc.javax.net.ssl.trustStorePassword | **Available since:** 1.6.0
Password used to encrypt the SSL truststore. Leave blank to use no password.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| rpc.javax.net.ssl.trustStoreType | **Available since:** 1.6.0
Type of SSL truststore.
**type:** STRING, **zk mutable:** no, **default value:** `jks` | -| rpc.message.size.max | **Available since:** 2.1.3
The maximum size of a message that can be received by a server.
**type:** BYTES, **zk mutable:** no, **default value:** `2147483647` | -| rpc.sasl.qop | **Available since:** 1.7.0
The quality of protection to be used with SASL. Valid values are 'auth', 'auth-int', and 'auth-conf'.
**type:** STRING, **zk mutable:** no, **default value:** `auth` | -| rpc.ssl.cipher.suites | **Available since:** 1.6.1
Comma separated list of cipher suites that can be used by accepted connections.
**type:** STRING, **zk mutable:** no, **default value:** empty | -| rpc.ssl.client.protocol | **Available since:** 1.6.2
The protocol used to connect to a secure server. Must be in the list of enabled protocols on the server side `rpc.ssl.server.enabled.protocols`.
**type:** STRING, **zk mutable:** no, **default value:** `TLSv1.2` | -| rpc.ssl.server.enabled.protocols | **Available since:** 1.6.2
Comma separated list of protocols that can be used to accept connections.
**type:** STRING, **zk mutable:** no, **default value:** `TLSv1.2` | -| rpc.useJsse | **Available since:** 1.6.0
Use JSSE system properties to configure SSL rather than the rpc.javax.net.ssl.* Accumulo properties.
**type:** BOOLEAN, **zk mutable:** no, **default value:** `false` | -| **sserver.*** | **Experimental**
**Available since:** 2.1.0
Properties in this category affect the behavior of the scan servers. | -| sserver.cache.data.size | **Experimental**
**Available since:** 2.1.0
Specifies the size of the cache for RFile data blocks on each scan server.
**type:** MEMORY, **zk mutable:** yes but requires restart of the sserver, **default value:** `10%` | -| sserver.cache.index.size | **Experimental**
**Available since:** 2.1.0
Specifies the size of the cache for RFile index blocks on each scan server.
**type:** MEMORY, **zk mutable:** yes but requires restart of the sserver, **default value:** `25%` | -| sserver.cache.metadata.expiration | **Experimental**
**Available since:** 2.1.0
The time after which cached tablet metadata will be expired if not previously refreshed.
**type:** TIMEDURATION, **zk mutable:** yes but requires restart of the sserver, **default value:** `5m` | -| sserver.cache.metadata.refresh.percent | **Experimental**
**Available since:** 2.1.3
The time after which cached tablet metadata will be refreshed, expressed as a percentage of the expiration time. Cache hits after this time, but before the expiration time, will trigger a background refresh for future hits. Value must be less than 100%. Set to 0 will disable refresh.
**type:** FRACTION, **zk mutable:** yes, **default value:** `.75` | -| sserver.cache.summary.size | **Experimental**
**Available since:** 2.1.0
Specifies the size of the cache for summary data on each scan server.
**type:** MEMORY, **zk mutable:** yes but requires restart of the sserver, **default value:** `10%` | -| sserver.default.blocksize | **Experimental**
**Available since:** 2.1.0
Specifies a default blocksize for the scan server caches.
**type:** BYTES, **zk mutable:** yes but requires restart of the sserver, **default value:** `1M` | -| sserver.port.client | **Experimental**
**Available since:** 2.1.0
The port used for handling client connections on the tablet servers.
**type:** PORT, **zk mutable:** yes but requires restart of the sserver, **default value:** `9996` | -| sserver.port.search | **Experimental**
**Available since:** 2.1.0
if the ports above are in use, search higher ports until one is available.
**type:** BOOLEAN, **zk mutable:** yes but requires restart of the sserver, **default value:** `true` | -| **sserver.scan.executors.*** | **Experimental**
**Available since:** 2.1.0
Prefix for defining executors to service scans. See [scan executors]({% durl administration/scan-executors %}) for an overview of why and how to use this property. For each executor the number of threads, thread priority, and an optional prioritizer can be configured. To configure a new executor, set `sserver.scan.executors..threads=`. Optionally, can also set `sserver.scan.executors..priority=`, `sserver.scan.executors..prioritizer=`, and `sserver.scan.executors..prioritizer.opts.=`. | -| sserver.scan.executors.default.prioritizer | **Experimental**
**Available since:** 2.1.0
Prioritizer for the default scan executor. Defaults to none which results in FIFO priority. Set to a class that implements org.apache.accumulo.core.spi.scan.ScanPrioritizer to configure one.
**type:** STRING, **zk mutable:** yes, **default value:** empty | -| sserver.scan.executors.default.threads | **Experimental**
**Available since:** 2.1.0
The number of threads for the scan executor that tables use by default.
**type:** COUNT, **zk mutable:** yes, **default value:** `16` | -| sserver.scan.executors.meta.threads | **Experimental**
**Available since:** 2.1.0
The number of threads for the metadata table scan executor.
**type:** COUNT, **zk mutable:** yes, **default value:** `8` | -| sserver.scan.reference.expiration | **Experimental**
**Available since:** 2.1.0
The amount of time a scan reference is unused before its deleted from metadata table.
**type:** TIMEDURATION, **zk mutable:** yes but requires restart of the sserver, **default value:** `5m` | -| sserver.server.threadcheck.time | **Experimental**
**Available since:** 2.1.0
The time between adjustments of the thrift server thread pool.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `1s` | -| sserver.server.threads.minimum | **Experimental**
**Available since:** 2.1.0
The minimum number of threads to use to handle incoming requests.
**type:** COUNT, **zk mutable:** yes but requires restart of the sserver, **default value:** `2` | -| sserver.server.threads.timeout | **Experimental**
**Available since:** 2.1.0
The time after which incoming request threads terminate with no work available. Zero (0) will keep the threads alive indefinitely.
**type:** TIMEDURATION, **zk mutable:** yes but requires restart of the sserver, **default value:** `0s` | -| **table.*** | **Available since:** 1.3.5
Properties in this category affect tablet server treatment of tablets, but can be configured on a per-table basis. Setting these properties in accumulo.properties will override the default globally for all tables and not any specific table. However, both the default and the global setting can be overridden per table using the table operations API or in the shell, which sets the overridden value in zookeeper. Restarting accumulo tablet servers after setting these properties in accumulo.properties will cause the global setting to take effect. However, you must use the API or the shell to change properties in zookeeper that are set on a table. | -| table.balancer | **Available since:** 1.3.5
This property can be set to allow the LoadBalanceByTable load balancer to change the called Load Balancer for this table.
**type:** STRING, **zk mutable:** yes, **default value:** `org.apache.accumulo.core.spi.balancer.SimpleLoadBalancer` | -| table.bloom.enabled | **Available since:** 1.3.5
Use bloom filters on this table.
**type:** BOOLEAN, **zk mutable:** yes, **default value:** `false` | -| table.bloom.error.rate | **Available since:** 1.3.5
Bloom filter error rate.
**type:** FRACTION, **zk mutable:** yes, **default value:** `0.5%` | -| table.bloom.hash.type | **Available since:** 1.3.5
The bloom filter hash type.
**type:** STRING, **zk mutable:** yes, **default value:** `murmur` | -| table.bloom.key.functor | **Available since:** 1.3.5
A function that can transform the key prior to insertion and check of bloom filter. org.apache.accumulo.core.file.keyfunctor.RowFunctor, org.apache.accumulo.core.file.keyfunctor.ColumnFamilyFunctor, and org.apache.accumulo.core.file.keyfunctor.ColumnQualifierFunctor are allowable values. One can extend any of the above mentioned classes to perform specialized parsing of the key.
**type:** CLASSNAME, **zk mutable:** yes, **default value:** {% jlink -f org.apache.accumulo.core.file.keyfunctor.RowFunctor %} | -| table.bloom.load.threshold | **Available since:** 1.3.5
This number of seeks that would actually use a bloom filter must occur before a RFile's bloom filter is loaded. Set this to zero to initiate loading of bloom filters when a RFile is opened.
**type:** COUNT, **zk mutable:** yes, **default value:** `1` | -| table.bloom.size | **Available since:** 1.3.5
Bloom filter size, as number of keys.
**type:** COUNT, **zk mutable:** yes, **default value:** `1048576` | -| table.bulk.max.tablets | **Available since:** 2.1.0
The maximum number of tablets allowed for one bulk import file. Value of 0 is Unlimited. This property is only enforced in the new bulk import API.
**type:** COUNT, **zk mutable:** yes, **default value:** `0` | -| table.cache.block.enable | **Available since:** 1.3.5
Determines whether data block cache is enabled for a table.
**type:** BOOLEAN, **zk mutable:** yes, **default value:** `false` | -| table.cache.index.enable | **Available since:** 1.3.5
Determines whether index block cache is enabled for a table.
**type:** BOOLEAN, **zk mutable:** yes, **default value:** `true` | -| table.class.loader.context | **Available since:** 2.1.0
The context to use for loading per-table resources, such as iterators from the configured factory in `general.context.class.loader.factory`.
**type:** STRING, **zk mutable:** yes, **default value:** empty | -| ~~ table.classpath.context~~ | **Available since:** 1.5.0
*Deprecated since:* 2.1.0
*Replaced by:* table.class.loader.context
~~Per table classpath context.~~
~~**type:** STRING~~, ~~**zk mutable:** yes~~, ~~**default value:** empty~~ | -| table.compaction.configurer | **Available since:** 2.1.0
A plugin that can dynamically configure compaction output files based on input files.
**type:** CLASSNAME, **zk mutable:** yes, **default value:** empty | -| **table.compaction.configurer.opts.*** | **Available since:** 2.1.0
Options for the table compaction configuror. | -| table.compaction.dispatcher | **Available since:** 2.1.0
A configurable dispatcher that decides what compaction service a table should use.
**type:** CLASSNAME, **zk mutable:** yes, **default value:** {% jlink -f org.apache.accumulo.core.spi.compaction.SimpleCompactionDispatcher %} | -| **table.compaction.dispatcher.opts.*** | **Available since:** 2.1.0
Options for the table compaction dispatcher. | -| ~~ table.compaction.major.everything.idle~~ | **Available since:** 1.3.5
*Deprecated since:* 2.1.0
~~After a tablet has been idle (no mutations) for this time period it may have all of its RFiles compacted into one. There is no guarantee an idle tablet will be compacted. Compactions of idle tablets are only started when regular compactions are not running. Idle compactions only take place for tablets that have one or more RFiles.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `1h`~~ | -| table.compaction.major.output.drop.cache | **Available since:** 2.1.1
Setting this property to true will callFSDataOutputStream.setDropBehind(true) on the major compaction output stream.
**type:** BOOLEAN, **zk mutable:** yes, **default value:** `false` | -| table.compaction.major.ratio | **Available since:** 1.3.5
Minimum ratio of total input size to maximum input RFile size for running a major compaction.
**type:** FRACTION, **zk mutable:** yes, **default value:** `3` | -| table.compaction.minor.idle | **Available since:** 1.3.5
After a tablet has been idle (no mutations) for this time period it may have its in-memory map flushed to disk in a minor compaction. There is no guarantee an idle tablet will be compacted.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `5m` | -| ~~ table.compaction.minor.logs.threshold~~ | **Available since:** 1.3.5
*Deprecated since:* 2.0.0
*Replaced by:* tserver.wal.max.referenced
~~This property is deprecated and replaced.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `3`~~ | -| table.compaction.minor.output.drop.cache | **Available since:** 2.1.1
Setting this property to true will callFSDataOutputStream.setDropBehind(true) on the minor compaction output stream.
**type:** BOOLEAN, **zk mutable:** yes, **default value:** `false` | -| table.compaction.selection.expiration.ms | **Available since:** 2.1.0
User compactions select files and are then queued for compaction, preventing these files from being used in system compactions. This timeout allows system compactions to cancel the hold queued user compactions have on files, when its queued for more than the specified time. If a system compaction cancels a hold and runs, then the user compaction can reselect and hold files after the system compaction runs.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `2m` | -| table.compaction.selector | **Available since:** 2.1.0
A configurable selector for a table that can periodically select file for mandatory compaction, even if the files do not meet the compaction ratio.
**type:** CLASSNAME, **zk mutable:** yes, **default value:** empty | -| **table.compaction.selector.opts.*** | **Available since:** 2.1.0
Options for the table compaction dispatcher. | -| **table.constraint.*** | **Available since:** 1.3.5
Properties in this category are per-table properties that add constraints to a table. These properties start with the category prefix, followed by a number, and their values correspond to a fully qualified Java class that implements the Constraint interface.
For example:
table.constraint.1 = org.apache.accumulo.core.constraints.MyCustomConstraint
and:
table.constraint.2 = my.package.constraints.MySecondConstraint. | -| **table.crypto.opts.*** | **Experimental**
**Available since:** 2.1.0
Properties related to on-disk file encryption. | -| **table.crypto.opts.sensitive.*** | **Experimental**
**Available since:** 2.1.0
Sensitive properties related to on-disk file encryption. | -| **table.custom.*** | **Available since:** 1.7.0
Prefix to be used for user defined arbitrary properties. | -| table.delete.behavior | **Experimental**
**Available since:** 2.0.0
This determines what action to take when a delete marker is seen. Valid values are `process` and `fail` with `process` being the default. When set to `process`, deletes will suppress data. When set to `fail`, any deletes seen will cause an exception. The purpose of `fail` is to support tables that never delete data and need fast seeks within the timestamp range of a column. When setting this to fail, also consider configuring the `org.apache.accumulo.core.data.constraints.NoDeleteConstraint` constraint.
**type:** STRING, **zk mutable:** yes, **default value:** `process` | -| table.durability | **Available since:** 1.7.0
The durability used to write to the write-ahead log. Legal values are: none, which skips the write-ahead log; log, which sends the data to the write-ahead log, but does nothing to make it durable; flush, which pushes data to the file system; and sync, which ensures the data is written to disk.
**type:** DURABILITY, **zk mutable:** yes, **default value:** `sync` | -| table.failures.ignore | **Available since:** 1.3.5
If you want queries for your table to hang or fail when data is missing from the system, then set this to false. When this set to true missing data will be reported but queries will still run possibly returning a subset of the data.
**type:** BOOLEAN, **zk mutable:** yes, **default value:** `false` | -| table.file.blocksize | **Available since:** 1.3.5
The HDFS block size used when writing RFiles. When set to 0B, the value/defaults of HDFS property 'dfs.block.size' will be used.
**type:** BYTES, **zk mutable:** yes, **default value:** `0B` | -| table.file.compress.blocksize | **Available since:** 1.3.5
The maximum size of data blocks in RFiles before they are compressed and written.
**type:** BYTES, **zk mutable:** yes, **default value:** `100k` | -| table.file.compress.blocksize.index | **Available since:** 1.4.0
The maximum size of index blocks in RFiles before they are compressed and written.
**type:** BYTES, **zk mutable:** yes, **default value:** `128k` | -| table.file.compress.type | **Available since:** 1.3.5
Compression algorithm used on index and data blocks before they are written. Possible values: zstd, gz, snappy, bzip2, lzo, lz4, none.
**type:** STRING, **zk mutable:** yes, **default value:** `gz` | -| table.file.max | **Available since:** 1.4.0
The maximum number of RFiles each tablet in a table can have. When adjusting this property you may want to consider adjusting table.compaction.major.ratio also. Setting this property to 0 will make it default to tserver.scan.files.open.max-1, this will prevent a tablet from having more RFiles than can be opened. Prior to 2.1.0 this property was used to trigger merging minor compactions, but merging minor compactions were removed in 2.1.0. Now this property is only used by the DefaultCompactionStrategy and the DefaultCompactionPlanner. The DefaultCompactionPlanner started using this property in 2.1.3, before that it did not use the property.
**type:** COUNT, **zk mutable:** yes, **default value:** `15` | -| table.file.replication | **Available since:** 1.3.5
The number of replicas for a table's RFiles in HDFS. When set to 0, HDFS defaults are used.
**type:** COUNT, **zk mutable:** yes, **default value:** `0` | -| table.file.summary.maxSize | **Available since:** 2.0.0
The maximum size summary that will be stored. The number of RFiles that had summary data exceeding this threshold is reported by Summary.getFileStatistics().getLarge(). When adjusting this consider the expected number RFiles with summaries on each tablet server and the summary cache size.
**type:** BYTES, **zk mutable:** yes, **default value:** `256k` | -| table.file.type | **Available since:** 1.3.5
Change the type of file a table writes.
**type:** FILENAME_EXT, **zk mutable:** yes, **default value:** `rf` | -| table.formatter | **Available since:** 1.4.0
The Formatter class to apply on results in the shell.
**type:** STRING, **zk mutable:** yes, **default value:** `org.apache.accumulo.core.util.format.DefaultFormatter` | -| **table.group.*** | **Available since:** 1.3.5
Properties in this category are per-table properties that define locality groups in a table. These properties start with the category prefix, followed by a name, followed by a period, and followed by a property for that group.
For example table.group.group1=x,y,z sets the column families for a group called group1. Once configured, group1 can be enabled by adding it to the list of groups in the table.groups.enabled property.
Additional group options may be specified for a named group by setting `table.group..opt.=`. | -| table.groups.enabled | **Available since:** 1.3.5
A comma separated list of locality group names to enable for this table.
**type:** STRING, **zk mutable:** yes, **default value:** empty | -| ~~ table.interepreter~~ | **Available since:** 1.5.0
*Deprecated since:* 2.1.0
~~The ScanInterpreter class to apply on scan arguments in the shell. Note that this property is deprecated and will be removed in a future version.~~
~~**type:** STRING~~, ~~**zk mutable:** yes~~, ~~**default value:** `org.apache.accumulo.core.util.interpret.DefaultScanInterpreter`~~ | -| **table.iterator.*** | **Available since:** 1.3.5
Properties in this category specify iterators that are applied at various stages (scopes) of interaction with a table. These properties start with the category prefix, followed by a scope (minc, majc, scan, etc.), followed by a period, followed by a name, as in table.iterator.scan.vers, or table.iterator.scan.custom. The values for these properties are a number indicating the ordering in which it is applied, and a class name such as:
table.iterator.scan.vers = 10,org.apache.accumulo.core.iterators.VersioningIterator
These iterators can take options if additional properties are set that look like this property, but are suffixed with a period, followed by 'opt' followed by another period, and a property name.
For example, table.iterator.minc.vers.opt.maxVersions = 3. | -| **table.iterator.majc.*** | **Available since:** 1.5.2
Convenience prefix to find options for the majc iterator scope. | -| **table.iterator.minc.*** | **Available since:** 1.5.2
Convenience prefix to find options for the minc iterator scope. | -| **table.iterator.scan.*** | **Available since:** 1.5.2
Convenience prefix to find options for the scan iterator scope. | -| ~~ table.majc.compaction.strategy~~ | **Available since:** 1.6.0
*Deprecated since:* 2.1.0
*Replaced by:* table.compaction.selector
~~See {% jlink -f org.apache.accumulo.core.spi.compaction %}.~~
~~**type:** CLASSNAME~~, ~~**zk mutable:** yes~~, ~~**default value:** empty~~ | -| ~~ **table.majc.compaction.strategy.opts.***~~ | **Available since:** 1.6.0
*Deprecated since:* 2.1.0
*Replaced by:* table.compaction.selector.opts.
~~Properties in this category are used to configure the compaction strategy.~~ | -| ~~ table.replication~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Is replication enabled for the given table.~~
~~**type:** BOOLEAN~~, ~~**zk mutable:** yes~~, ~~**default value:** `false`~~ | -| ~~ **table.replication.target.***~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Enumerate a mapping of other systems which this table should replicate their data to. The key suffix is the identifying cluster name and the value is an identifier for a location on the target system, e.g. the ID of the table on the target to replicate to.~~ | -| table.sampler | **Available since:** 1.8.0
The name of a class that implements org.apache.accumulo.core.Sampler. Setting this option enables storing a sample of data which can be scanned. Always having a current sample can useful for query optimization and data comprehension. After enabling sampling for an existing table, a compaction is needed to compute the sample for existing data. The compact command in the shell has an option to only compact RFiles without sample data.
**type:** CLASSNAME, **zk mutable:** yes, **default value:** empty | -| **table.sampler.opt.*** | **Available since:** 1.8.0
The property is used to set options for a sampler. If a sample had two options like hasher and modulous, then the two properties table.sampler.opt.hasher=${hash algorithm} and table.sampler.opt.modulous=${mod} would be set. | -| table.scan.dispatcher | **Available since:** 2.0.0
This class is used to dynamically dispatch scans to configured scan executors. Configured classes must implement {% jlink org.apache.accumulo.core.spi.scan.ScanDispatcher %}. See [scan executors]({% durl administration/scan-executors %}) for an overview of why and how to use this property. This property is ignored for the root and metadata table. The metadata table always dispatches to a scan executor named `meta`.
**type:** CLASSNAME, **zk mutable:** yes, **default value:** {% jlink -f org.apache.accumulo.core.spi.scan.SimpleScanDispatcher %} | -| **table.scan.dispatcher.opts.*** | **Available since:** 2.0.0
Options for the table scan dispatcher. | -| table.scan.max.memory | **Available since:** 1.3.5
The maximum amount of memory that will be used to cache results of a client query/scan. Once this limit is reached, the buffered data is sent to the client.
**type:** BYTES, **zk mutable:** yes, **default value:** `512k` | -| table.security.scan.visibility.default | **Available since:** 1.3.5
The security label that will be assumed at scan time if an entry does not have a visibility expression.
Note: An empty security label is displayed as []. The scan results will show an empty visibility even if the visibility from this setting is applied to the entry.
CAUTION: If a particular key has an empty security label AND its table's default visibility is also empty, access will ALWAYS be granted for users with permission to that table. Additionally, if this field is changed, all existing data with an empty visibility label will be interpreted with the new label on the next scan.
**type:** STRING, **zk mutable:** yes, **default value:** empty | -| table.split.endrow.size.max | **Available since:** 1.7.0
Maximum size of end row.
**type:** BYTES, **zk mutable:** yes, **default value:** `10k` | -| table.split.threshold | **Available since:** 1.3.5
A tablet is split when the combined size of RFiles exceeds this amount.
**type:** BYTES, **zk mutable:** yes, **default value:** `1G` | -| **table.summarizer.*** | **Available since:** 2.0.0
Prefix for configuring summarizers for a table. Using this prefix multiple summarizers can be configured with options for each one. Each summarizer configured should have a unique id, this id can be anything. To add a summarizer set `table.summarizer.=.` If the summarizer has options, then for each option set `table.summarizer..opt.=`. | -| table.suspend.duration | **Available since:** 1.8.0
For tablets belonging to this table: When a tablet server dies, allow the tablet server this duration to revive before reassigning its tablets to other tablet servers.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `0s` | -| ~~ table.walog.enabled~~ | **Available since:** 1.3.5
*Deprecated since:* 1.7.0
*Replaced by:* table.durability
~~Use table.durability=none instead.~~
~~**type:** BOOLEAN~~, ~~**zk mutable:** yes~~, ~~**default value:** `true`~~ | -| ~~ **trace.***~~ | **Available since:** 1.3.5
*Deprecated since:* 2.1.0
~~Properties in this category affect the behavior of distributed tracing.~~ | -| ~~ trace.password~~ | **Available since:** 1.3.5
*Deprecated since:* 2.1.0
~~The password for the user used to store distributed traces.~~
~~**type:** STRING~~, ~~**zk mutable:** no~~, ~~**default value:** `secret`~~ | -| ~~ trace.port.client~~ | **Available since:** 1.3.5
*Deprecated since:* 2.1.0
~~The listening port for the trace server.~~
~~**type:** PORT~~, ~~**zk mutable:** no~~, ~~**default value:** `12234`~~ | -| ~~ **trace.span.receiver.***~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Prefix for span receiver configuration properties.~~ | -| ~~ trace.span.receivers~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~A list of span receiver classes to send trace spans.~~
~~**type:** CLASSNAMELIST~~, ~~**zk mutable:** no~~, ~~**default value:** `org.apache.accumulo.tracer.ZooTraceClient`~~ | -| ~~ trace.table~~ | **Available since:** 1.3.5
*Deprecated since:* 2.1.0
~~The name of the table to store distributed traces.~~
~~**type:** STRING~~, ~~**zk mutable:** no~~, ~~**default value:** `trace`~~ | -| ~~ **trace.token.property.***~~ | **Available since:** 1.5.0
*Deprecated since:* 2.1.0
~~The prefix used to create a token for storing distributed traces. For each property required by trace.token.type, place this prefix in front of it.~~ | -| ~~ trace.token.type~~ | **Available since:** 1.5.0
*Deprecated since:* 2.1.0
~~An AuthenticationToken type supported by the authorizer.~~
~~**type:** CLASSNAME~~, ~~**zk mutable:** no~~, ~~**default value:** {% jlink -f org.apache.accumulo.core.client.security.tokens.PasswordToken %}~~ | -| ~~ trace.user~~ | **Available since:** 1.3.5
*Deprecated since:* 2.1.0
~~The name of the user to store distributed traces.~~
~~**type:** STRING~~, ~~**zk mutable:** no~~, ~~**default value:** `root`~~ | -| ~~ trace.zookeeper.path~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~The zookeeper node where tracers are registered.~~
~~**type:** STRING~~, ~~**zk mutable:** no~~, ~~**default value:** `/tracers`~~ | -| **tserver.*** | **Available since:** 1.3.5
Properties in this category affect the behavior of the tablet servers. | -| tserver.assignment.concurrent.max | **Available since:** 1.7.0
The number of threads available to load tablets. Recoveries are still performed serially.
**type:** COUNT, **zk mutable:** yes, **default value:** `2` | -| tserver.assignment.duration.warning | **Available since:** 1.6.2
The amount of time an assignment can run before the server will print a warning along with the current stack trace. Meant to help debug stuck assignments.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `10m` | -| tserver.bloom.load.concurrent.max | **Available since:** 1.3.5
The number of concurrent threads that will load bloom filters in the background. Setting this to zero will make bloom filters load in the foreground.
**type:** COUNT, **zk mutable:** yes, **default value:** `4` | -| tserver.bulk.assign.threads | **Available since:** 1.4.0
The manager delegates bulk import RFile processing and assignment to tablet servers. After file has been processed, the tablet server will assign the file to the appropriate tablets on all servers. This property controls the number of threads used to communicate to the other servers.
**type:** COUNT, **zk mutable:** yes, **default value:** `1` | -| tserver.bulk.process.threads | **Available since:** 1.4.0
The manager will task a tablet server with pre-processing a bulk import RFile prior to assigning it to the appropriate tablet servers. This configuration value controls the number of threads used to process the files.
**type:** COUNT, **zk mutable:** yes, **default value:** `1` | -| tserver.bulk.retry.max | **Available since:** 1.4.0
The number of times the tablet server will attempt to assign a RFile to a tablet as it migrates and splits.
**type:** COUNT, **zk mutable:** yes, **default value:** `5` | -| tserver.bulk.timeout | **Available since:** 1.4.3
The time to wait for a tablet server to process a bulk import request.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `5m` | -| tserver.cache.data.size | **Available since:** 1.3.5
Specifies the size of the cache for RFile data blocks.
**type:** MEMORY, **zk mutable:** yes but requires restart of the tserver, **default value:** `10%` | -| tserver.cache.index.size | **Available since:** 1.3.5
Specifies the size of the cache for RFile index blocks.
**type:** MEMORY, **zk mutable:** yes but requires restart of the tserver, **default value:** `25%` | -| tserver.cache.manager.class | **Available since:** 2.0.0
Specifies the class name of the block cache factory implementation. Alternative implementation is org.apache.accumulo.core.file.blockfile.cache.tinylfu.TinyLfuBlockCacheManager.
**type:** STRING, **zk mutable:** yes but requires restart of the tserver, **default value:** `org.apache.accumulo.core.file.blockfile.cache.lru.LruBlockCacheManager` | -| tserver.cache.summary.size | **Available since:** 2.0.0
Specifies the size of the cache for summary data on each tablet server.
**type:** MEMORY, **zk mutable:** yes but requires restart of the tserver, **default value:** `10%` | -| tserver.client.timeout | **Available since:** 1.3.5
Time to wait for clients to continue scans before closing a session.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `3s` | -| ~~ tserver.compaction.major.concurrent.max~~ | **Available since:** 1.3.5
*Deprecated since:* 2.1.0
*Replaced by:* tserver.compaction.major.service.default.planner.opts.executors
~~The maximum number of concurrent major compactions for a tablet server.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `3`~~ | -| tserver.compaction.major.delay | **Available since:** 1.3.5
Time a tablet server will sleep between checking which tablets need compaction.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `30s` | -| **tserver.compaction.major.service.*** | **Available since:** 2.1.0
Prefix for compaction services. | -| tserver.compaction.major.service.default.planner | **Available since:** 2.1.0
Planner for default compaction service.
**type:** CLASSNAME, **zk mutable:** yes, **default value:** {% jlink -f org.apache.accumulo.core.spi.compaction.DefaultCompactionPlanner %} | -| tserver.compaction.major.service.default.planner.opts.executors | **Available since:** 2.1.0
See {% jlink -f org.apache.accumulo.core.spi.compaction.DefaultCompactionPlanner %}.
**type:** STRING, **zk mutable:** yes, **default value:** `[{"name":"small","type":"internal","maxSize":"32M","numThreads":2},{"name":"medium","type":"internal","maxSize":"128M","numThreads":2},{"name":"large","type":"internal","numThreads":2}]` | -| tserver.compaction.major.service.default.planner.opts.maxOpen | **Available since:** 2.1.0
The maximum number of files a compaction will open.
**type:** COUNT, **zk mutable:** yes, **default value:** `10` | -| tserver.compaction.major.service.default.rate.limit | **Available since:** 2.1.0
Maximum number of bytes to read or write per second over all major compactions in this compaction service, or 0B for unlimited.
**type:** BYTES, **zk mutable:** yes, **default value:** `0B` | -| tserver.compaction.major.service.meta.planner | **Available since:** 2.1.0
Compaction planner for metadata table.
**type:** CLASSNAME, **zk mutable:** yes, **default value:** {% jlink -f org.apache.accumulo.core.spi.compaction.DefaultCompactionPlanner %} | -| tserver.compaction.major.service.meta.planner.opts.executors | **Available since:** 2.1.0
See {% jlink -f org.apache.accumulo.core.spi.compaction.DefaultCompactionPlanner %}.
**type:** JSON, **zk mutable:** yes, **default value:** `[{"name":"small","type":"internal","maxSize":"32M","numThreads":2},{"name":"huge","type":"internal","numThreads":2}]` | -| tserver.compaction.major.service.meta.planner.opts.maxOpen | **Available since:** 2.1.0
The maximum number of files a compaction will open.
**type:** COUNT, **zk mutable:** yes, **default value:** `30` | -| tserver.compaction.major.service.meta.rate.limit | **Available since:** 2.1.0
Maximum number of bytes to read or write per second over all major compactions in this compaction service, or 0B for unlimited.
**type:** BYTES, **zk mutable:** yes, **default value:** `0B` | -| tserver.compaction.major.service.root.planner | **Available since:** 2.1.0
Compaction planner for root tablet service.
**type:** CLASSNAME, **zk mutable:** yes, **default value:** {% jlink -f org.apache.accumulo.core.spi.compaction.DefaultCompactionPlanner %} | -| tserver.compaction.major.service.root.planner.opts.executors | **Available since:** 2.1.0
See {% jlink -f org.apache.accumulo.core.spi.compaction.DefaultCompactionPlanner %}.
**type:** STRING, **zk mutable:** yes, **default value:** `[{"name":"small","type":"internal","maxSize":"32M","numThreads":1},{"name":"huge","type":"internal","numThreads":1}]` | -| tserver.compaction.major.service.root.planner.opts.maxOpen | **Available since:** 2.1.0
The maximum number of files a compaction will open.
**type:** COUNT, **zk mutable:** yes, **default value:** `30` | -| tserver.compaction.major.service.root.rate.limit | **Available since:** 2.1.0
Maximum number of bytes to read or write per second over all major compactions in this compaction service, or 0B for unlimited.
**type:** BYTES, **zk mutable:** yes, **default value:** `0B` | -| ~~ tserver.compaction.major.thread.files.open.max~~ | **Available since:** 1.4.0
*Deprecated since:* 2.1.0
*Replaced by:* tserver.compaction.major.service.default.planner.opts.maxOpen
~~Max number of RFiles a major compaction thread can open at once.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `10`~~ | -| ~~ tserver.compaction.major.throughput~~ | **Available since:** 1.8.0
*Deprecated since:* 2.1.0
*Replaced by:* tserver.compaction.major.service.default.rate.limit
~~Maximum number of bytes to read or write per second over all major compactions within each compaction service, or 0B for unlimited.~~
~~**type:** BYTES~~, ~~**zk mutable:** yes~~, ~~**default value:** `0B`~~ | -| ~~ tserver.compaction.major.trace.percent~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~The percent of major compactions to trace.~~
~~**type:** FRACTION~~, ~~**zk mutable:** yes~~, ~~**default value:** `0.1`~~ | -| tserver.compaction.minor.concurrent.max | **Available since:** 1.3.5
The maximum number of concurrent minor compactions for a tablet server.
**type:** COUNT, **zk mutable:** yes, **default value:** `4` | -| ~~ tserver.compaction.minor.trace.percent~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~The percent of minor compactions to trace.~~
~~**type:** FRACTION~~, ~~**zk mutable:** yes~~, ~~**default value:** `0.1`~~ | -| tserver.compaction.warn.time | **Available since:** 1.6.0
When a compaction has not made progress for this time period, a warning will be logged.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `10m` | -| tserver.default.blocksize | **Available since:** 1.3.5
Specifies a default blocksize for the tserver caches.
**type:** BYTES, **zk mutable:** yes but requires restart of the tserver, **default value:** `1M` | -| tserver.dir.memdump | **Available since:** 1.3.5
A long running scan could possibly hold memory that has been minor compacted. To prevent this, the in memory map is dumped to a local file and the scan is switched to that local file. We can not switch to the minor compacted file because it may have been modified by iterators. The file dumped to the local dir is an exact copy of what was in memory.
**type:** PATH, **zk mutable:** yes, **default value:** `/tmp` | -| tserver.files.open.idle | **Available since:** 1.3.5
Tablet servers leave previously used RFiles open for future queries. This setting determines how much time an unused RFile should be kept open until it is closed.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `1m` | -| tserver.health.check.interval | **Available since:** 2.1.0
The time between tablet server health checks.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `30m` | -| tserver.hold.time.max | **Available since:** 1.4.0
The maximum time for a tablet server to be in the "memory full" state. If the tablet server cannot write out memory in this much time, it will assume there is some failure local to its node, and quit. A value of zero is equivalent to forever.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `5m` | -| tserver.last.location.mode | **Available since:** 2.1.1
Describes how the system will record the 'last' location for tablets, which can be used for assigning them when a cluster restarts. If 'compaction' is the mode, then the system will record the location where the tablet's most recent compaction occurred. If 'assignment' is the mode, then the most recently assigned location will be recorded. The manager.startup.tserver properties might also need to be set to ensure the tserver is available before tablets are initially assigned if the 'last' location is to be used.
**type:** LAST_LOCATION_MODE, **zk mutable:** yes, **default value:** `compaction` | -| tserver.log.busy.tablets.count | **Available since:** 1.10.0
Number of busiest tablets to log. Logged at interval controlled by tserver.log.busy.tablets.interval. If <= 0, logging of busy tablets is disabled.
**type:** COUNT, **zk mutable:** yes, **default value:** `0` | -| tserver.log.busy.tablets.interval | **Available since:** 1.10.0
Time interval between logging out busy tablets information.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `1h` | -| tserver.memory.maps.max | **Available since:** 1.3.5
Maximum amount of memory that can be used to buffer data written to a tablet server. There are two other properties that can effectively limit memory usage `table.compaction.minor.logs.threshold` and `tserver.wal.max.size`. Ensure that `table.compaction.minor.logs.threshold` * `tserver.wal.max.size` >= this property.
**type:** MEMORY, **zk mutable:** yes, **default value:** `33%` | -| tserver.memory.maps.native.enabled | **Available since:** 1.3.5
An in-memory data store for accumulo implemented in c++ that increases the amount of data accumulo can hold in memory and avoids Java GC pauses.
**type:** BOOLEAN, **zk mutable:** yes but requires restart of the tserver, **default value:** `true` | -| ~~ tserver.metadata.readahead.concurrent.max~~ | **Available since:** 1.3.5
*Deprecated since:* 2.0.0
*Replaced by:* tserver.scan.executors.meta.threads
~~The maximum number of concurrent metadata read ahead that will execute.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `8`~~ | -| tserver.migrations.concurrent.max | **Available since:** 1.3.5
The maximum number of concurrent tablet migrations for a tablet server.
**type:** COUNT, **zk mutable:** yes, **default value:** `1` | -| ~~ tserver.monitor.fs~~ | **Available since:** 1.3.5
*Deprecated since:* 2.1.0
~~When enabled the tserver will monitor file systems and kill itself when one switches from rw to ro. This is usually and indication that Linux has detected a bad disk.~~
~~**type:** BOOLEAN~~, ~~**zk mutable:** yes~~, ~~**default value:** `false`~~ | -| tserver.port.client | **Available since:** 1.3.5
The port used for handling client connections on the tablet servers.
**type:** PORT, **zk mutable:** yes but requires restart of the tserver, **default value:** `9997` | -| tserver.port.search | **Available since:** 1.3.5
if the ports above are in use, search higher ports until one is available.
**type:** BOOLEAN, **zk mutable:** yes but requires restart of the tserver, **default value:** `false` | -| ~~ tserver.readahead.concurrent.max~~ | **Available since:** 1.3.5
*Deprecated since:* 2.0.0
*Replaced by:* tserver.scan.executors.default.threads
~~The maximum number of concurrent read ahead that will execute. This effectively limits the number of long running scans that can run concurrently per tserver.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `16`~~ | -| ~~ tserver.recovery.concurrent.max~~ | **Available since:** 1.5.0
*Deprecated since:* 2.1.0
*Replaced by:* tserver.wal.sort.concurrent.max
~~The maximum number of threads to use to sort logs during recovery.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `2`~~ | -| ~~ tserver.replication.batchwriter.replayer.memory~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Memory to provide to batchwriter to replay mutations for replication.~~
~~**type:** BYTES~~, ~~**zk mutable:** yes~~, ~~**default value:** `50M`~~ | -| ~~ tserver.replication.default.replayer~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Default AccumuloReplicationReplayer implementation.~~
~~**type:** CLASSNAME~~, ~~**zk mutable:** yes~~, ~~**default value:** {% jlink -f org.apache.accumulo.tserver.replication.BatchWriterReplicationReplayer %}~~ | -| ~~ **tserver.replication.replayer.***~~ | **Available since:** 1.7.0
*Deprecated since:* 2.1.0
~~Allows configuration of implementation used to apply replicated data.~~ | -| **tserver.scan.executors.*** | **Available since:** 2.0.0
Prefix for defining executors to service scans. See [scan executors]({% durl administration/scan-executors %}) for an overview of why and how to use this property. For each executor the number of threads, thread priority, and an optional prioritizer can be configured. To configure a new executor, set `tserver.scan.executors..threads=`. Optionally, can also set `tserver.scan.executors..priority=`, `tserver.scan.executors..prioritizer=`, and `tserver.scan.executors..prioritizer.opts.=`. | -| tserver.scan.executors.default.prioritizer | **Available since:** 2.0.0
Prioritizer for the default scan executor. Defaults to none which results in FIFO priority. Set to a class that implements org.apache.accumulo.core.spi.scan.ScanPrioritizer to configure one.
**type:** STRING, **zk mutable:** yes, **default value:** empty | -| tserver.scan.executors.default.threads | **Available since:** 2.0.0
The number of threads for the scan executor that tables use by default.
**type:** COUNT, **zk mutable:** yes, **default value:** `16` | -| tserver.scan.executors.meta.threads | **Available since:** 2.0.0
The number of threads for the metadata table scan executor.
**type:** COUNT, **zk mutable:** yes, **default value:** `8` | -| tserver.scan.files.open.max | **Available since:** 1.4.0
Maximum total RFiles that all tablets in a tablet server can open for scans.
**type:** COUNT, **zk mutable:** yes but requires restart of the tserver, **default value:** `100` | -| tserver.scan.results.max.timeout | **Available since:** 2.1.0
Max time for the thrift client handler to wait for scan results before timing out.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `1s` | -| ~~ tserver.server.message.size.max~~ | **Available since:** 1.6.0
*Deprecated since:* 2.1.3
*Replaced by:* rpc.message.size.max
~~The maximum size of a message that can be sent to a tablet server.~~
~~**type:** BYTES~~, ~~**zk mutable:** yes but requires restart of the tserver~~, ~~**default value:** `1G`~~ | -| tserver.server.threadcheck.time | **Available since:** 1.4.0
The time between adjustments of the server thread pool.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `1s` | -| tserver.server.threads.minimum | **Available since:** 1.4.0
The minimum number of threads to use to handle incoming requests.
**type:** COUNT, **zk mutable:** yes but requires restart of the tserver, **default value:** `20` | -| tserver.server.threads.timeout | **Available since:** 2.1.0
The time after which incoming request threads terminate with no work available. Zero (0) will keep the threads alive indefinitely.
**type:** TIMEDURATION, **zk mutable:** yes but requires restart of the tserver, **default value:** `0s` | -| tserver.session.idle.max | **Available since:** 1.3.5
When a tablet server's SimpleTimer thread triggers to check idle sessions, this configurable option will be used to evaluate scan sessions to determine if they can be closed due to inactivity.
**type:** TIMEDURATION, **zk mutable:** yes but requires restart of the tserver, **default value:** `1m` | -| tserver.session.update.idle.max | **Available since:** 1.6.5
When a tablet server's SimpleTimer thread triggers to check idle sessions, this configurable option will be used to evaluate update sessions to determine if they can be closed due to inactivity.
**type:** TIMEDURATION, **zk mutable:** yes but requires restart of the tserver, **default value:** `1m` | -| tserver.slow.filepermit.time | **Available since:** 1.9.3
If a thread blocks more than this period of time waiting to get file permits, debugging information will be written.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `100ms` | -| tserver.slow.flush.time | **Available since:** 1.8.0
If a flush to the write-ahead log takes longer than this period of time, debugging information will written, and may result in a log rollover.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `100ms` | -| ~~ tserver.sort.buffer.size~~ | **Available since:** 1.5.0
*Deprecated since:* 2.1.0
*Replaced by:* tserver.wal.sort.buffer.size
~~The amount of memory to use when sorting logs during recovery.~~
~~**type:** MEMORY~~, ~~**zk mutable:** yes~~, ~~**default value:** `10%`~~ | -| tserver.summary.partition.threads | **Available since:** 2.0.0
Summary data must be retrieved from RFiles. For a large number of RFiles, the files are broken into partitions of 100k files. This setting determines how many of these groups of 100k RFiles will be processed concurrently.
**type:** COUNT, **zk mutable:** yes, **default value:** `10` | -| tserver.summary.remote.threads | **Available since:** 2.0.0
For a partitioned group of 100k RFiles, those files are grouped by tablet server. Then a remote tablet server is asked to gather summary data. This setting determines how many concurrent request are made per partition.
**type:** COUNT, **zk mutable:** yes, **default value:** `128` | -| tserver.summary.retrieval.threads | **Available since:** 2.0.0
The number of threads on each tablet server available to retrieve summary data, that is not currently in cache, from RFiles.
**type:** COUNT, **zk mutable:** yes, **default value:** `10` | -| tserver.tablet.split.midpoint.files.max | **Available since:** 1.3.5
To find a tablets split points, all RFiles are opened and their indexes are read. This setting determines how many RFiles can be opened at once. When there are more RFiles than this setting multiple passes must be made, which is slower. However opening too many RFiles at once can cause problems.
**type:** COUNT, **zk mutable:** yes, **default value:** `300` | -| tserver.total.mutation.queue.max | **Available since:** 1.7.0
The amount of memory used to store write-ahead-log mutations before flushing them.
**type:** MEMORY, **zk mutable:** yes, **default value:** `5%` | -| tserver.wal.blocksize | **Available since:** 1.5.0
The size of the HDFS blocks used to write to the Write-Ahead log. If zero, it will be 110% of `tserver.wal.max.size` (that is, try to use just one block).
**type:** BYTES, **zk mutable:** yes, **default value:** `0` | -| tserver.wal.max.age | **Available since:** 2.1.0
The maximum age for each write-ahead log.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `24h` | -| tserver.wal.max.referenced | **Available since:** 2.1.0
When a tablet server has more than this many write ahead logs, any tablet referencing older logs over this threshold is minor compacted. Also any tablet referencing this many logs or more will be compacted.
**type:** COUNT, **zk mutable:** yes, **default value:** `3` | -| tserver.wal.max.size | **Available since:** 2.1.0
The maximum size for each write-ahead log. See comment for property `tserver.memory.maps.max`.
**type:** BYTES, **zk mutable:** yes, **default value:** `1G` | -| tserver.wal.maximum.wait.duration | **Available since:** 2.1.0
The maximum amount of time to wait after a failure to create or write a write-ahead log.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `5m` | -| tserver.wal.replication | **Available since:** 1.5.0
The replication to use when writing the Write-Ahead log to HDFS. If zero, it will use the HDFS default replication setting.
**type:** COUNT, **zk mutable:** yes, **default value:** `0` | -| tserver.wal.sort.buffer.size | **Available since:** 2.1.0
The amount of memory to use when sorting logs during recovery.
**type:** MEMORY, **zk mutable:** yes, **default value:** `10%` | -| tserver.wal.sort.concurrent.max | **Available since:** 2.1.0
The maximum number of threads to use to sort logs during recovery.
**type:** COUNT, **zk mutable:** yes, **default value:** `2` | -| **tserver.wal.sort.file.*** | **Available since:** 2.1.0
The rfile properties to use when sorting logs during recovery. Most of the properties that begin with 'table.file' can be used here. For example, to set the compression of the sorted recovery files to snappy use 'tserver.wal.sort.file.compress.type=snappy'. | -| tserver.wal.sync | **Available since:** 1.5.0
Use the SYNC_BLOCK create flag to sync WAL writes to disk. Prevents problems recovering from sudden system resets.
**type:** BOOLEAN, **zk mutable:** yes, **default value:** `true` | -| ~~ tserver.wal.sync.method~~ | **Available since:** 1.5.2
*Deprecated since:* 1.7.0
*Replaced by:* table.durability
~~Use table.durability instead.~~
~~**type:** STRING~~, ~~**zk mutable:** yes~~, ~~**default value:** `hsync`~~ | -| tserver.wal.tolerated.creation.failures | **Available since:** 2.1.0
The maximum number of failures tolerated when creating a new write-ahead log. Negative values will allow unlimited creation failures. Exceeding this number of failures consecutively trying to create a new write-ahead log causes the TabletServer to exit.
**type:** COUNT, **zk mutable:** yes, **default value:** `50` | -| tserver.wal.tolerated.wait.increment | **Available since:** 2.1.0
The amount of time to wait between failures to create or write a write-ahead log.
**type:** TIMEDURATION, **zk mutable:** yes, **default value:** `1000ms` | -| ~~ tserver.walog.max.age~~ | **Available since:** 1.6.6
*Deprecated since:* 2.1.0
*Replaced by:* tserver.wal.max.age
~~The maximum age for each write-ahead log.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `24h`~~ | -| ~~ tserver.walog.max.referenced~~ | **Available since:** 2.0.0
*Deprecated since:* 2.1.0
*Replaced by:* tserver.wal.max.referenced
~~When a tablet server has more than this many write ahead logs, any tablet referencing older logs over this threshold is minor compacted. Also any tablet referencing this many logs or more will be compacted.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `3`~~ | -| ~~ tserver.walog.max.size~~ | **Available since:** 1.3.5
*Deprecated since:* 2.1.0
*Replaced by:* tserver.wal.max.size
~~The maximum size for each write-ahead log. See comment for property `tserver.memory.maps.max`.~~
~~**type:** BYTES~~, ~~**zk mutable:** yes~~, ~~**default value:** `1G`~~ | -| ~~ tserver.walog.maximum.wait.duration~~ | **Available since:** 1.7.1
*Deprecated since:* 2.1.0
*Replaced by:* tserver.wal.maximum.wait.duration
~~The maximum amount of time to wait after a failure to create or write a write-ahead log.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `5m`~~ | -| ~~ tserver.walog.tolerated.creation.failures~~ | **Available since:** 1.7.1
*Deprecated since:* 2.1.0
*Replaced by:* tserver.wal.tolerated.creation.failures
~~The maximum number of failures tolerated when creating a new write-ahead log. Negative values will allow unlimited creation failures. Exceeding this number of failures consecutively trying to create a new write-ahead log causes the TabletServer to exit.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `50`~~ | -| ~~ tserver.walog.tolerated.wait.increment~~ | **Available since:** 1.7.1
*Deprecated since:* 2.1.0
*Replaced by:* tserver.wal.tolerated.wait.increment
~~The amount of time to wait between failures to create or write a write-ahead log.~~
~~**type:** TIMEDURATION~~, ~~**zk mutable:** yes~~, ~~**default value:** `1000ms`~~ | -| ~~ tserver.workq.threads~~ | **Available since:** 1.4.2
*Deprecated since:* 2.1.3
~~The number of threads for the distributed work queue. These threads are used for copying failed bulk import RFiles. This property will be removed when bulk import V1 is removed.~~
~~**type:** COUNT~~, ~~**zk mutable:** yes~~, ~~**default value:** `2`~~ | - -### Property Types - -| Type | Description | -|--------------|-------------| -| duration | A non-negative integer optionally followed by a unit of time (whitespace disallowed), as in 30s.
If no unit of time is specified, seconds are assumed. Valid units are 'ms', 's', 'm', 'h' for milliseconds, seconds, minutes, and hours.
Examples of valid durations are '600', '30s', '45m', '30000ms', '3d', and '1h'.
Examples of invalid durations are '1w', '1h30m', '1s 200ms', 'ms', '', and 'a'.
Unless otherwise stated, the max value for the duration represented in milliseconds is 9223372036854775807 | -| bytes | A positive integer optionally followed by a unit of memory (whitespace disallowed).
If no unit is specified, bytes are assumed. Valid units are 'B', 'K', 'M' or 'G' for bytes, kilobytes, megabytes, gigabytes.
Examples of valid memories are '1024', '20B', '100K', '1500M', '2G', '20%'.
Examples of invalid memories are '1M500K', '1M 2K', '1MB', '1.5G', '1,024K', '', and 'a'.
Unless otherwise stated, the max value for the memory represented in bytes is 9223372036854775807 | -| memory | A positive integer optionally followed by a unit of memory or a percentage (whitespace disallowed).
If a percentage is specified, memory will be a percentage of the max memory allocated to a Java process (set by the JVM option -Xmx).
If no unit is specified, bytes are assumed. Valid units are 'B', 'K', 'M', 'G', '%' for bytes, kilobytes, megabytes, gigabytes, and percentage.
Examples of valid memories are '1024', '20B', '100K', '1500M', '2G', '20%'.
Examples of invalid memories are '1M500K', '1M 2K', '1MB', '1.5G', '1,024K', '', and 'a'.
Unless otherwise stated, the max value for the memory represented in bytes is 9223372036854775807 | -| host list | A comma-separated list of hostnames or ip addresses, with optional port numbers.
Examples of valid host lists are 'localhost:2000,www.example.com,10.10.1.1:500' and 'localhost'.
Examples of invalid host lists are '', ':1000', and 'localhost:80000' | -| port | An positive integer in the range 1024-65535 (not already in use or specified elsewhere in the configuration),
zero to indicate any open ephemeral port, or a range of positive integers specified as M-N | -| count | A non-negative integer in the range of 0-2147483647 | -| fraction/percentage | A floating point number that represents either a fraction or, if suffixed with the '%' character, a percentage.
Examples of valid fractions/percentages are '10', '1000%', '0.05', '5%', '0.2%', '0.0005'.
Examples of invalid fractions/percentages are '', '10 percent', 'Hulk Hogan' | -| path | A string that represents a filesystem path, which can be either relative or absolute to some directory. The filesystem depends on the property. Substitutions of the ACCUMULO_HOME environment variable can be done in the system config file using '${env:ACCUMULO_HOME}' or similar. | -| absolute path | An absolute filesystem path. The filesystem depends on the property. This is the same as path, but enforces that its root is explicitly specified. | -| java class | A fully qualified java class name representing a class on the classpath.
An example is 'java.lang.String', rather than 'String' | -| java class list | A list of fully qualified java class names representing classes on the classpath.
An example is 'java.lang.String', rather than 'String' | -| durability | One of 'none', 'log', 'flush' or 'sync'. | -| gc_post_action | One of 'none', 'flush', or 'compact'. | -| last_location_mode | Defines how to update the last location. One of 'assignment', or 'compaction'. | -| string | An arbitrary string of characters whose format is unspecified and interpreted based on the context of the property to which it applies. | -| json | An arbitrary string that is represents a valid, parsable generic json object.The validity of the json object in the context of the property usage is not checked by this type. | -| boolean | Has a value of either 'true' or 'false' (case-insensitive) | -| uri | A valid URI | -| file name extension | One of the currently supported filename extensions for storing table data files. Currently, only rf is supported. | diff --git a/_docs-4/configuration/server-properties3.md b/_docs-4/configuration/server-properties4.md similarity index 59% rename from _docs-4/configuration/server-properties3.md rename to _docs-4/configuration/server-properties4.md index 8d633a5d9..edb83b21c 100644 --- a/_docs-4/configuration/server-properties3.md +++ b/_docs-4/configuration/server-properties4.md @@ -1,7 +1,7 @@ --- -title: Server Properties (3.x) +title: Server Properties (4.x) category: configuration -order: 6 +order: 4 --- @@ -10,164 +10,189 @@ Below are properties set in `accumulo.properties` or the Accumulo shell that con | Property | Description | |--------------|-------------| -| **compaction.coordinator.*** | **Experimental**
**Available since:** 2.1.0
Properties in this category affect the behavior of the accumulo compaction coordinator server. | -| compaction.coordinator.compaction.finalizer.check.interval | **Experimental**
**Available since:** 2.1.0
The interval at which to check for external compaction final state markers in the metadata table.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `60s` | -| compaction.coordinator.compaction.finalizer.threads.maximum | **Experimental**
**Available since:** 2.1.0
The maximum number of threads to use for notifying tablet servers that an external compaction has completed.
**type:** COUNT, **zk mutable:** no, **default value:** `5` | -| compaction.coordinator.compactor.dead.check.interval | **Experimental**
**Available since:** 2.1.0
The interval at which to check for dead compactors.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `5m` | -| compaction.coordinator.message.size.max | **Experimental**
**Available since:** 2.1.0
The maximum size of a message that can be sent to a tablet server.
**type:** BYTES, **zk mutable:** no, **default value:** `10M` | -| compaction.coordinator.port.client | **Experimental**
**Available since:** 2.1.0
The port used for handling Thrift client connections on the compaction coordinator server
**type:** PORT, **zk mutable:** no, **default value:** `9132` | -| compaction.coordinator.port.search | **Experimental**
**Available since:** 2.1.0
If the ports above are in use, search higher ports until one is available
**type:** BOOLEAN, **zk mutable:** no, **default value:** `false` | -| compaction.coordinator.threadcheck.time | **Experimental**
**Available since:** 2.1.0
The time between adjustments of the server thread pool.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `1s` | -| compaction.coordinator.threads.minimum | **Experimental**
**Available since:** 2.1.0
The minimum number of threads to use to handle incoming requests.
**type:** COUNT, **zk mutable:** no, **default value:** `1` | -| compaction.coordinator.threads.timeout | **Experimental**
**Available since:** 2.1.0
The time after which incoming request threads terminate with no work available. Zero (0) will keep the threads alive indefinitely.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `0s` | -| compaction.coordinator.tserver.check.interval | **Experimental**
**Available since:** 2.1.0
The interval at which to check the tservers for external compactions.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `1m` | -| **compactor.*** | **Experimental**
**Available since:** 2.1.0
Properties in this category affect the behavior of the accumulo compactor server. | -| compactor.message.size.max | **Experimental**
**Available since:** 2.1.0
The maximum size of a message that can be sent to a tablet server.
**type:** BYTES, **zk mutable:** no, **default value:** `10M` | -| compactor.port.client | **Experimental**
**Available since:** 2.1.0
The port used for handling client connections on the compactor servers
**type:** PORT, **zk mutable:** no, **default value:** `9133` | -| compactor.port.search | **Experimental**
**Available since:** 2.1.0
If the compactor.port.client is in use, search higher ports until one is available
**type:** BOOLEAN, **zk mutable:** no, **default value:** `false` | -| compactor.queue | **Experimental**
**Available since:** 3.0.0
The queue for which this Compactor will perform compactions
**type:** STRING, **zk mutable:** no, **default value:** empty | -| compactor.threadcheck.time | **Experimental**
**Available since:** 2.1.0
The time between adjustments of the server thread pool.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `1s` | -| compactor.threads.minimum | **Experimental**
**Available since:** 2.1.0
The minimum number of threads to use to handle incoming requests.
**type:** COUNT, **zk mutable:** no, **default value:** `1` | -| compactor.threads.timeout | **Experimental**
**Available since:** 2.1.0
The time after which incoming request threads terminate with no work available. Zero (0) will keep the threads alive indefinitely.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `0s` | +| **compaction.*** | **Available since:** 3.1.0
Both major and minor compaction properties can be included under this prefix. | +| **compaction.coordinator.*** | **Available since:** 2.1.0
Properties in this category affect the behavior of the accumulo compaction coordinator server. | +| compaction.coordinator.compactor.dead.check.interval | **Available since:** 2.1.0
The interval at which to check for dead compactors.
**type:** TIMEDURATION, **zk mutable:** no, **default value:** `5m` | +| compaction.coordinator.reservation.threads.meta | **Available since:** 4.0.0
The number of threads used to reserve files for compaction in a tablet for accumulo.metadata tablets.
**type:** COUNT, **zk mutable:** no, **default value:** `1` | +| compaction.coordinator.reservation.threads.root | **Available since:** 4.0.0
The number of threads used to reserve files for compaction in a tablet for the root tablet.
**type:** COUNT, **zk mutable:** no, **default value:** `1` | +| compaction.coordinator.reservation.threads.user | **Available since:** 4.0.0
The number of threads used to reserve files for compaction in a tablet for user tables.
**type:** COUNT, **zk mutable:** no, **default value:** `64` | +| **compaction.service.*** | **Available since:** 3.1.0
This prefix should be used to define all properties for the compaction services.See {% jlink -f org.apache.accumulo.core.spi.compaction.RatioBasedCompactionPlanner %}.
A new external compaction service would be defined like the following:
`compaction.service.newService.planner="org.apache.accumulo.core.spi.compaction.RatioBasedCompactionPlanner".`
`compaction.service.newService.opts.groups="[{"group": "small", "maxSize":"32M"},{ "group":"medium", "maxSize":"512M"},{"group":"large"}]`
`compaction.service.newService.opts.maxOpen=50`.
Additional options can be defined using the `compaction.service..opts.