Apache Accumulo 2.0.0

05 Sep 2017

Apache Accumulo 2.0.0 is a significant release.

Notable Changes

New API for creating connections to Accumulo

A fluent API for clients to build Connector objects was introduced in ACCUMULO-4784. The new API deprecates ClientConfiguration and introduces its own properties file called accumulo-client.properties that ships with the Accumulo tarball. See the client documentation for more information on how to use the new API.

Simplified Accumulo scripts and configuration files

Accumulo’s scripts and configuration were refactored in ACCUMULO-4490 to make Accumulo easier to use. The number of scripts in the bin directory of the Accumulo release tarball has been reduced from 20 scripts to the four scripts below:

  • accumulo - mostly left alone except for improved usage
  • accumulo-service - manage Accumulo processes as servcies
  • accumulo-cluster - manage Accumulo on cluster. Replaces start-all.sh and stop-all.sh
  • accumulo-util - combines many utility scripts into one script.

Read this blog post for more information on this change.

Scan Executors

Scan executors were added to support prioritizing and dedicating scan resources. Each executor has a configurable number of threads and an optional custom prioritizer. Tables can be configured in a flexible way to dispatch scans to different executors.

Official Accumulo docker image was created

An official Accumulo docker images was created in ACCUMULO-4706 to make it easier for users to run Accumulo in Docker. To support running in Docker, a few changes were made to Accumulo:

  • The --upload-accumulo-site option was added to accumulo init to set properties in accumulo-site.xml to Zookeeper during initialization.
  • The -o <key>=<value> option was added to the accumulo command to override configuration that could not be set in Zookeeper.

Updated and improved Accumulo documentation

Accumulo’s documentation has been refactored with the following improvements:

  • Documentation source now lives in accumulo-website repo so changes are now immediately viewable.
  • Improved navigation using a new sidebar
  • Better linking to Javadocs, between documentation pages, and to configuration properties.

Accumulo’s documentation was also reviewed and changes were made to improve accuracy and remove out of date documentation.

Moved Accumulo Examples to its own repo

The Accumulo examples were moved out the accumulo repo to the accumulo-examples repo which has the following benefits:

  • The Accumulo examples are no longer released with Accumulo and can be continuously improved.
  • The Accumulo API version used by the examples can be updated right before Accumulo is released to test for any changes to the API that break semver.

Simplified Accumulo logging configuration

The log4j configuration of Accumulo services was improved in ACCUMULO-4588 with the following changes:

  • Logging is now configured using standard log4j JVM property ‘log4j.configuration’ in accumulo-env.sh.
  • Tarball ships with fewer log4j config files (3 rather than 6) which are all log4j properties files.
  • Log4j XML can still be used by editing accumulo-env.sh
  • Removed auditLog.xml and added audit log configuration to log4j-service properties files
  • Accumulo conf/ directory no longer has an examples/ directory. Configuration files ship in conf/ and are used by default.
  • Accumulo monitor by default will bind to but will advertise hostname looked up in Java for log forwarding
  • Switched to use full hostnames rather than short hostnames for logging

Removed comparison of Value with byte[] in Value.equals()

Replaced the ability to use Value.equals(byte[]) to check if the contents of a Value object was equal to a given byte array in ACCUMULO-4726. To perform that check, you must now use the newly added Value.contentEquals(byte[]) method. This corrects the behavior of the equals method so that it conforms to the API contract documented in the javadoc inherited from its superclass. However, it will break any code that was relying on the undocumented and broken behavior to compare Value objects with byte arrays. Such comparisons will now always return false instead of true, even if the contents are equal.

Other Notable Changes

  • ACCUMULO-3652 - Replaced string concatenation in log statements with slf4j where applicable. Removed tserver TLevel logging class.
  • ACCUMULO-4733 - Introduced a new configuration option, crypto.security.provider, to allow for a configurable security provider for crypto. If unset, it will default to the system level Provider list.
  • ACCUMULO-4737 - Renamed configuration option crypto.cipher.algorithm.name to crypto.cipher.key.algorithm.name. The option now functions as described in the user manual. Introduced a new configuration option, crypto.wal.cipher.suite, to allow for a separate configuration for WAL files. If unset, this will default to the value for crypto.cipher.suite.
  • ACCUMULO-4449 - Removed ‘slave’ terminology and replaced with ‘tserver’ in most cases. The former ‘slaves’ config file is now named ‘tservers’. Added checks to scripts to fail if ‘slaves’ file is present.


View the Upgrading Accumulo documentation for guidance.


View all releases in the archive