Apache Accumulo 3.0.0

21 Aug 2023


Apache Accumulo 3.0.0 is a non-LTM major version release. While it primarily contains the 2.1 codebase, including all patches through 2.1.2, it has also removed a substantial number of deprecated features and code, in an attempt to clean up several years of accrued technical debt, and lower the maintenance burden to make way for future improvements. It also contains a few other minor improvements.

Notable Removals

  • #1328 The FileSystem monitor has been removed and will no longer watch for problems with local file systems and self-terminate. System administrators are encouraged to use whatever systems health monitoring is appropriate for their deployments, rather than depend on Accumulo to monitor these.
  • #2443 The MapReduce APIs embedded in the accumulo-core module were removed. The separate accumulo-hadoop-mapreduce jar is their replacement.
  • #3073 The legacy Connector and Instance client classes were removed. The AccumuloClient is their replacement.
  • #3080 The cross-data center replication feature was removed without replacement due to lack of being maintained, having numerous outstanding unfixed issues with no volunteer to maintain it since it was deprecated, and substantial code complexity. The built-in replication table it used for tracking replication metadata will be removed on upgrade.
  • #3114, #3115, #3116, #3117 Removed deprecated VolumeChooser, TabletBalancer, Constraint, and other APIs, in favor of their SPI replacements.
  • #3106 Remove deprecated configuration properties (see 2.1 property documentation for which ones were deprecated)
  • #3112 Remove CompactionStrategy class in favor of CompactionSelector and CompactionConfigurer.
  • #3160 Remove upgrade code for versions prior to 2.1 (minimum version to upgrade from is now 2.1.
  • #3192 Remove arguments to server processes, such as (-a, -g, -q, etc.) were removed in favor of configuration properties that can be specified in the Accumulo configuration files or supplied on a per-process basis using the -o argument. The provided cluster management reference scripts were updated in #3197 to use the -o method.
  • #3136 Remove the built-in VFS classloader support. To use a custom classloader, users must now set the ContextClassLoaderFactory implementation in the properties. The default is now the URLContextClassLoaderFactory.
  • #3318 Remove the old bulk import implementation, replaced by the new bulk import API added in 2.0.0.
  • #3265 Remove scan interpreter and scan formatter from the shell
  • #3361 Remove all remaining references to the old “master” service (renamed to “manager”).
  • #3360 Remove checks and code related to the old password hashing mechanism in Accumulo. This will discontinue warnings about users passwords that are still out of date. Instead, those outdated passwords will simply become invalid. If the user authenticated to Accumulo at any time prior to upgrading, their password will have been converted. So this only affects accounts that were never used with 2.1 at all. As mitigation, such users will be able to have their password reset by the root user. If the root user never authenticated (and neither had another admin user) while on 2.1 (very very unlikely), an administrator can reset the entire user database through the normal init step to reset security.
  • #3378 Remove broken support for old map files. (RFiles have been in use for a long time, so this should not impact any users; if users had been trying to use map files, they would have found that they were broken anyway)

Notable Additions

  • #3088 New methods were added to compaction-related APIs to share information about the current tablet being compacted to user code
  • #3107 Decompose internal thrift services by function to make RPC functionality more modular by server instances
  • #3189 Standardized server lock data structure in ZooKeeper
  • #3206 Internal caches now use Caffeine instead of Guava’s Cache
  • #3161, #3288 The internal service (renamed from GarbageCollectionLogger to LowMemoryDetector) that was previously used only to report low memory in servers, was made configurable to allow pausing certain operations like scanning, minor compactions, or major compactions, when memory is low. See the server properties for general.low.mem.*.


View the Upgrading Accumulo documentation for guidance.

3.0.0 GitHub Project

All tickets related to 3.0.0.

View all releases in the archive