This is an automated email from the ASF dual-hosted git repository.

dlmarion pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo-website.git


The following commit(s) were added to refs/heads/main by this push:
     new d3bcb1154 Updated in-depth installation for 4.x (#495)
d3bcb1154 is described below

commit d3bcb1154c158612da29972e1546ac6b72a0f5d8
Author: Dave Marion <[email protected]>
AuthorDate: Tue Sep 29 14:59:46 2026 -0400

    Updated in-depth installation for 4.x (#495)
    
    
    Co-authored-by: Dom G <[email protected]>
---
 _docs-4/administration/in-depth-install.md | 215 +++++++++++++----------------
 1 file changed, 95 insertions(+), 120 deletions(-)

diff --git a/_docs-4/administration/in-depth-install.md 
b/_docs-4/administration/in-depth-install.md
index de0e6c46d..e3c4efd3d 100644
--- a/_docs-4/administration/in-depth-install.md
+++ b/_docs-4/administration/in-depth-install.md
@@ -31,32 +31,28 @@ communicate with HDFS. To achieve good ingest and query 
performance, sufficient
 network bandwidth must be available between any two machines.
 
 In addition to needing access to ports associated with HDFS and ZooKeeper, 
Accumulo will
-use the following default ports. Please make sure that they are open, or change
+use the following default ports and port ranges. Please make sure that they 
are open, or change
 their value in [accumulo.properties].
 
 |Port | Description | Property Name
 |-----|-------------|--------------
 |4445 | Shutdown Port (Accumulo MiniCluster) | n/a
-|9132 | Accumulo Compaction Coordinator | [compaction.coordinator.port.client]
-|9133 | Accumulo Compactor | [compactor.port.client]
+|9600-9699 | Accumulo Compactor | [compactor.port.client]
 |9995 | Accumulo HTTP monitor | [monitor.port.client]
-|9996 | Accumulo Scan Server | [sserver.port.client]
-|9997 | Accumulo Tablet Server | [tserver.port.client]
+|9700-9799 | Accumulo Scan Server | [sserver.port.client]
+|9800-9899 | Accumulo Tablet Server | [tserver.port.client]
 |9998 | Accumulo GC | [gc.port.client]
-|9999 | Accumulo Manager Server | [manager.port.client]
-|12234 | Accumulo Tracer | [trace.port.client]
+|9999-10009 | Accumulo Manager Server | [manager.port.client]
 |42424 | Accumulo Proxy Server | n/a
-|10001 | Accumulo Manager Replication service | 
[manager.replication.coordinator.port]
-|10002 | Accumulo TabletServer Replication service | 
[replication.receipt.service.port]
 
 In addition, the user can provide `0` and an ephemeral port will be chosen 
instead. This
 ephemeral port is likely to be unique and not already bound. Thus, configuring 
ports to
 use `0` instead of an explicit value, should, in most cases, work around any 
issues of
 running multiple distinct Accumulo instances (or any other process which tries 
to use the
-same default ports) on the same hardware. Finally, the `*.port.client` 
properties will work
-with the port range syntax (M-N) allowing the user to specify a range of ports 
for the
-service to attempt to bind. The ports in the range will be tried in a 1-up 
manner starting
-at the low end of the range to, and including, the high end of the range.
+same default ports) on the same hardware. The port range syntax (M-N) allows 
the user to
+specify a range of ports for the service to attempt to bind. The ports in the 
range will
+be tried in a 1-up manner starting at the low end of the range to, and 
including, the high
+end of the range.
 
 ## Download Tarball
 
@@ -100,7 +96,7 @@ exist in `conf/` and be properly configured. If you are 
using `accumulo-cluster`
 cluster, the `conf/` directory must also contain a `cluster.yaml` file. You 
can either create these files
 manually or run `accumulo-cluster create-config`.
 
-Logging is configured in [accumulo-env.sh] to use three log4j configuration 
files in `conf/`. The
+Logging is configured in [accumulo-env.sh] to use two log4j configuration 
files in `conf/`. The
 file used depends on the Accumulo command or service being run. Logging for 
most Accumulo services
 (i.e. Manager, TabletServer, Garbage Collector) is configured by 
[log4j2-service.properties]. All Accumulo commands (i.e `init`,
 `shell`, etc) are configured by [log4j2.properties].
@@ -181,15 +177,15 @@ native map.
 To adjust the size of the native map, modify the value of 
[tserver.memory.maps.max]. When increasing
 this value, it is also important to adjust the values below:
 
-* [table.compaction.minor.logs.threshold] - maximum number of write-ahead log 
files that a tablet
+* [tserver.wal.max.referenced] - maximum number of write-ahead log files that 
a tablet
   can reference before they will be automatically minor compacted
-* [tserver.walog.max.size] - maximum size of a write-ahead log.
+* [tserver.wal.max.size] - maximum size of a write-ahead log.
 
 The maximum size of the native maps for a server should be less than the 
product of the write-ahead
 log maximum size and minor compaction threshold for log files:
 
 ```
-$table.compaction.minor.logs.threshold * $tserver.walog.max.size >= 
$tserver.memory.maps.max
+$tserver.wal.max.referenced * $tserver.wal.max.size >= $tserver.memory.maps.max
 ```
 
 This formula ensures that minor compactions won't be automatically triggered 
before the native
@@ -198,23 +194,56 @@ maps can be completely saturated.
 Subsequently, when increasing the size of the write-ahead logs, it can also be 
important
 to increase the HDFS block size that Accumulo uses when creating the files for 
the write-ahead log.
 This is controlled via [tserver.wal.blocksize]. A basic recommendation is that 
when
-[tserver.walog.max.size] is larger than 2GB in size, set 
[tserver.wal.blocksize] to 2GB.
+[tserver.wal.max.size] is larger than 2GB in size, set [tserver.wal.blocksize] 
to 2GB.
 Increasing the block size to a value larger than 2GB can result in decreased 
write
 performance to the write-ahead log file which will slow ingest.
 
 ### Cluster Specification
 
-If you are using `accumulo-cluster` to start a cluster, configure the 
following on the
-machine that will serve as the Accumulo manager:
+If you are using `accumulo-cluster` to manage a cluster, then you need to 
generate and
+modify the `cluster.yaml` file. The `cluster.yaml` file can be created by 
running
+`accumulo-cluster create-config` and will create the following file:
 
-1. Run `accumulo-cluster create-config` to create the `cluster.yaml` file.
-2. Write the IP address or domain name of the Accumulo Manager to the 
[manager] section.
-3. Write the IP addresses or domain name of the machines that will be 
TabletServers to the
-   [tserver] section.
-
-Note that if using domain names rather than IP addresses, DNS must be 
configured
-properly for all machines participating in the cluster. DNS can be a confusing 
source
-of errors.
+```
+manager:
+  servers_per_host: 1
+  hosts:
+    - localhost
+
+monitor:
+  - localhost
+
+gc:
+  - localhost
+
+tserver:
+  default:
+    servers_per_host: 1
+    hosts:
+      - localhost
+
+compactor:
+  default:
+    servers_per_host: 1
+    hosts:
+      - localhost
+
+sserver:
+  default:
+    servers_per_host: 1
+    hosts:
+      - localhost
+``` 
+
+For each server type you will need to modify the list of hosts using either
+IP address or domain name. If using domain names rather than IP addresses,
+then DNS must be configured properly for all machines participating in the 
cluster.
+
+In the example above the compactor, sserver, and tserver sections support
+the user specifying different resource groups. The example only contains the
+`default` resource group. When adding resource groups to this file, be sure
+to also add them to the `accumulo-env.sh` file and to create them using
+the command `accumulo inst init --add-resource-groups <comma-separated group 
names>`.
 
 ### Configure accumulo.properties
 
@@ -249,15 +278,14 @@ instance, Accumulo identifies `localhost:8020` as a 
different HDFS instance than
 ### Deploy Configuration
 
 Copy [accumulo-env.sh] and [accumulo.properties] from the `conf/` directory on 
the manager to all
-Accumulo tablet servers. The "host" configuration files `accumulo-cluster` 
only need to be on
+hosts running Accumulo server processes. The `cluster.yaml` file only needs to 
be on
 servers where that command is run.
 
 ### Sensitive Configuration Values
 
 Accumulo has a number of properties that can be specified via the 
[accumulo.properties]
-file which are sensitive in nature, [instance.secret] and 
`trace.token.property.password`
-are two common examples. Both of these properties, if compromised, have the 
ability
-to result in data being leaked to users who should not have access to that 
data.
+file which are sensitive in nature, [instance.secret] is an example. These 
sensitive properties,
+if compromised, have the ability to result in data being leaked to users who 
should not have access to that data.
 
 In Hadoop-2.6.0, a new CredentialProvider class was introduced which serves as 
a common
 implementation to abstract away the storage and retrieval of passwords from 
plaintext
@@ -324,53 +352,36 @@ consideration. There is no enforcement of these warnings 
via the API.
 Accumulo builds its Java classpath in [accumulo-env.sh]. This classpath can be 
viewed by running
 `accumulo classpath`.
 
-After an Accumulo application has started, it will load classes from the 
locations specified in the
-deprecated [general.classpaths] property. Additionally, Accumulo will load 
classes from the
-locations specified in the [general.dynamic.classpaths] property and will 
monitor and reload them if
-they change. The reloading feature is useful during the development and 
testing of iterators as new
-or modified iterator classes can be deployed to Accumulo without having to 
restart the database.
-
-Accumulo also has an alternate configuration for the classloader which will 
allow it to load classes
-from remote locations. This mechanism uses Apache Commons VFS which enables 
locations such as http
-and hdfs to be used. This alternate configuration also uses the 
[general.classpaths] property in the
-same manner described above. It differs in that you need to configure the 
[general.vfs.classpaths]
-property instead of the [general.dynamic.classpaths] property. As in the 
default configuration, this
-alternate configuration will also monitor the vfs locations for changes and 
reload if necessary.
-
 ##### ClassLoader Contexts
 
-With the addition of the VFS based classloader, we introduced the notion of 
classloader contexts. A
-context is identified by a name and references a set of locations from which 
to load classes and can
-be specified in the [accumulo.properties] file or added using the `config` 
command in the shell.
-Below is an example for specify the app1 context in the [accumulo.properties] 
file:
-
-```
-# Application A classpath, loads jars from HDFS and local file system
-general.vfs.context.classpath.app1=hdfs://localhost:8020/applicationA/classpath/.*.jar,file:///opt/applicationA/lib/.*.jar
-```
+Tables can be configured to use a context classloader to load classes from 
locations other
+than the server classpath. This enables users to deploy jars for their 
application external
+to the server classpath allowing them to effect a classpath change without 
restarting the Accumulo process.
+The property `general.context.class.loader.factory` allows the user to supply 
their own
+ContextClassLoaderFactory implementation.
 
-The default behavior follows the Java ClassLoader contract in that classes, if 
they exist, are
-loaded from the parent classloader first. You can override this behavior by 
delegating to the parent
-classloader after looking in this classloader first. An example of this 
configuration is:
-
-```
-general.vfs.context.classpath.app1.delegation=post
-```
-
-To use contexts in your application you can set the {% plink 
table.classpath.context %} on your
+To use contexts in your application you can set the {% plink 
table.class.loader.context %} on your
 tables or use the `setClassLoaderContext()` method on Scanner and BatchScanner 
passing in the name
-of the context, app1 in the example above. Setting the property on the table 
allows your minc, majc,
+of the context. Setting the property on the table allows your minc, majc,
 and scan iterators to load classes from the locations defined by the context. 
Passing the context
 name to the scanners allows you to override the table setting to load only 
scan time iterators from
 a different location.
 
+The default ContextClassLoaderFactory implementation, 
URLContextClassLoaderFactory, uses
+a comma-separated list of jar paths as the context name and returns a 
URLClassLoader using
+the same paths. For example, to use the default implementation you would set 
the 
+{% plink table.class.loader.context %} property to 
`file://path/one/jar1.jar,file://path/two/jar2.jar`
+
+An alternate ContextClassLoaderFactory implementation that supports additional 
features
+can be found at 
https://github.com/apache/accumulo-classloaders/tree/main/modules/caching-classloader.
+
 ## Initialization
 
 Accumulo must be initialized to create the structures it uses internally to 
locate
 data across the cluster. HDFS is required to be configured and running before
 Accumulo can be initialized.
 
-Once HDFS is started, initialization can be performed by executing `accumulo 
init`. This script will
+Once HDFS is started, initialization can be performed by executing `accumulo 
inst init`. This script will
 prompt for a name for this instance of Accumulo. The instance name is used to 
identify a set of
 tables and instance-specific settings. The script will then write some 
information into HDFS so
 Accumulo can start properly.
@@ -399,7 +410,7 @@ take some time for particular configurations.
 
 Update your `conf/cluster.yaml` file to account for the addition.
 
-Next, ssh to each of the hosts you want to add and run:
+Next, run `accumulo-cluster start` or ssh to each of the hosts you want to add 
and run:
 
 ```bash
 accumulo-service tserver start
@@ -415,7 +426,7 @@ If you need to take a node out of operation, you can 
trigger a graceful shutdown
 server. Accumulo will automatically rebalance the tablets across the available 
tablet servers.
 
 ```bash
-accumulo admin stop <host(s)> {<host> ...}
+accumulo proc stop-servers <host:port> {<host:port> ...}
 ```
 
 Alternatively, you can ssh to each of the hosts you want to remove and run:
@@ -424,10 +435,7 @@ Alternatively, you can ssh to each of the hosts you want 
to remove and run:
 accumulo-service tserver stop
 ```
 
-Be sure to update your `conf/cluster.yaml` file to account for the removal of 
these hosts. Bear in mind
-that the monitor will not re-read the tservers file automatically, so it will 
report the
-decommissioned servers as down; it's recommended that you restart the monitor 
so that the node list
-is up to date.
+Be sure to update your `conf/cluster.yaml` file to account for the removal of 
these hosts.
 
 The steps described to decommission a node can also be used (without removal 
of the host from the
 `conf/cluster.yaml` file) to gracefully stop a node. This will ensure that the 
tabletserver is cleanly
@@ -469,46 +477,16 @@ to be able to scale to using 10's of GB of RAM and 10's 
of CPU cores.
 
 Accumulo TabletServers bind certain ports on the host to accommodate remote 
procedure calls to/from
 other nodes. Running more than one TabletServer on a host requires that you 
set the environment
-variable `ACCUMULO_SERVICE_INSTANCE` to an instance number (i.e 1, 2) for each 
instance that is
-started. Also, set the these properties in [accumulo.properties]:
-
-* {% plink tserver.port.search %} = `true`
-* {% plink replication.receipt.service.port %} = `0`
-
-In order to start multiple TabletServers on a node, the `accumulo` command 
must be used:
-
-```
-ACCUMULO_SERVICE_INSTANCE=1 ./bin/accumulo tserver &> ./logs/tserver1.out &
-ACCUMULO_SERVICE_INSTANCE=2 ./bin/accumulo tserver &> ./logs/tserver2.out &
-```
-
-#### Running multiple TabletServers per node in Accumulo 2.1.0 and later
-Starting with Accumulo 2.1.0, the `accumulo-cluster` script can be used along 
with environment
-variable `NUM_TSERVERS` as a convenient alternative to the `accumulo` command 
to start / stop
-multiple TabletServers per node. For example, the following commands can be 
used to start / stop
-2 TabletServers on the current node:
+variable `ACCUMULO_CLUSTER_ARG` to the number of processes before starting the 
service with the
+`accumulo-service` command. For example:
 
 ```
-NUM_TSERVERS=2 ./bin/accumulo-cluster start-here
-NUM_TSERVERS=2 ./bin/accumulo-cluster stop-here
+ACCUMULO_CLUSTER_ARG=2 ./bin/accumulo-service tserver start
 ```
 
-To start / stop the entire Accumulo cluster with 2 TabletServers per worker 
node, use:
-
-```
-NUM_TSERVERS=2 ./bin/accumulo-cluster start
-NUM_TSERVERS=2 ./bin/accumulo-cluster stop
-```
-
-Other commands like `accumulo-cluster start-tservers` and `accumulo-cluster 
stop-tservers` support
-the use of `NUM_TSERVERS` to specify the number of TabletServers per worker 
node.
-
-When `accumulo-cluster` is used along with `NUM_TSERVERS` greater than 1, the 
resultant log files
-and redirected stdout / stderr files for each TabletServer running on the node 
have the instance
-number as part of their respective filenames.
-
-Lastly, starting with Accumulo 2.1.0 the `accumulo-env.sh` script ensures that 
Accumulo metrics
-are correctly associated with the respective instance number for each 
TabletServer on a node.
+#### Running multiple processes per node with accumulo-cluster
+The `accumulo-cluster` script supports starting multiple processes on the same 
node. See
+the scripts help output for more information.
 
 ## Logging
 
@@ -531,10 +509,10 @@ either when the tablets from the failed server are 
reassigned by the Manager (in
 case of a single TabletServer failure) or the next time Accumulo starts (in 
the event of
 failure during shutdown).
 
-Recovery is performed by asking a tablet server to sort the logs so that 
tablets can easily find
-their missing updates. The sort status of each file is displayed on Accumulo 
monitor status page.
-Once the recovery is complete any tablets involved should return to an 
`online` state. Until then
-those tablets will be unavailable to clients.
+Recovery is performed by asking a compactor, scan server, or tablet server 
processes to sort the
+logs so that tablets can easily find their missing updates. The sort status of 
each file is
+displayed on Accumulo monitor status page. Once the recovery is complete any 
tablets involved
+should return to an `online` state. Until then those tablets will be 
unavailable to clients.
 
 The Accumulo client library is configured to retry failed mutations and in many
 cases clients will be able to continue processing after the recovery process 
without
@@ -545,7 +523,7 @@ throwing an exception.
 The following steps will allow a non-HA instance to be migrated to an HA 
instance. Consider an HDFS
 URL `hdfs://namenode.example.com:8020` which is going to be moved to 
`hdfs://nameservice1`.
 
-Before moving HDFS over to the HA namenode, use `accumulo admin volumes` to 
confirm
+Before moving HDFS over to the HA namenode, use `accumulo inst list-volumes` 
to confirm
 that the only volume displayed is the volume from the current namenode's HDFS 
URL.
 
 ```
@@ -576,8 +554,8 @@ instance.volumes=hdfs://nameservice1/accumulo
 instance.volumes.replacements=hdfs://namenode.example.com:8020/accumulo 
hdfs://nameservice1/accumulo
 ```
 
-Run `accumulo init --add-volumes` and start up the accumulo cluster. Verify 
that the
-new nameservice volume shows up with `accumulo admin volumes`.
+Run `accumulo inst init --add-volumes` and start up the accumulo cluster. 
Verify that the
+new nameservice volume shows up with `accumulo inst list-volumes`.
 
 ```
 Listing volumes referenced in zookeeper
@@ -738,11 +716,10 @@ same version your Accumulo is built with.
 Please check the release notes for your Accumulo version or use the
 [mailing lists][contact] for more info.
 
-[compaction.coordinator.port.client]: {% purl 
compaction.coordinator.port.client %}
 [compactor.port.client]: {% purl compactor.port.client %}
 [contact]: {{ site.baseurl }}/contact-us
 [quick start]: {% durl getting-started/quickstart %}
-[monitor]: {% durl administration/monitoring-metrics#monitor %}
+[monitor]: {% durl administration/monitoring-metrics#accumulo-monitor %}
 [config-mgmt]: {% durl configuration/overview %}
 [instance.volumes]: {% purl instance.volumes %}
 [instance.volumes.replacements]: {% purl instance.volumes.replacements %}
@@ -753,14 +730,13 @@ Please check the release notes for your Accumulo version 
or use the
 [sserver.port.client]: {% purl sserver.port.client %}
 [gc.port.client]: {% purl gc.port.client %}
 [manager.port.client]: {% purl manager.port.client %}
-[trace.port.client]: {% purl trace.port.client %}
 [table.suspend.duration]: {% purl table.suspend.duration %}
 [manager.replication.coordinator.port]: {% purl 
manager.replication.coordinator.port %}
 [replication.receipt.service.port]: {% purl replication.receipt.service.port %}
 [tserver.memory.maps.native.enabled]: {% purl 
tserver.memory.maps.native.enabled %}
 [tserver.memory.maps.max]: {% purl tserver.memory.maps.max %}
-[table.compaction.minor.logs.threshold]: {% purl 
table.compaction.minor.logs.threshold %}
-[tserver.walog.max.size]: {% purl tserver.walog.max.size %}
+[tserver.wal.max.size]: {% purl tserver.wal.max.size %}
+[tserver.wal.max.referenced]: {% purl tserver.wal.max.referenced %}
 [tserver.wal.blocksize]: {% purl tserver.wal.blocksize %}
 [general.security.credential.provider.paths]: {% purl 
general.security.credential.provider.paths %}
 [general.classpaths]: {% purl general.classpaths %}
@@ -775,7 +751,6 @@ Please check the release notes for your Accumulo version or 
use the
 [monitor-host]: {% durl configuration/files#monitor %}
 [manager]: {% durl configuration/files#manager %}
 [tserver]: {% durl configuration/files#tserver %}
-[tracers]: {% durl configuration/files#tracers %}
 [log4j2-service.properties]: {% durl 
configuration/files#log4j2-serviceproperties %}
 [log4j-monitor.properties]: {% durl 
configuration/files#log4j-monitorproperties %}
 [log4j2.properties]: {% durl configuration/files#log4j2properties %}

Reply via email to