Accumulo

Apache Accumulo is a sorted, distributed key-value store based on Google's Bigtable, HDFS and Apache Zookeeper. First designed and developed by a team in NSA, Accumulo's mission is to support big data storing and processing, but at the same time enforce fine-grained data access control. In particular, the team in NSA extends Bigtable in a way that Accumulo can control the access of individual data elements. Accumulo is currently an open source project under Apache v2 license.

History

2006

Google publishes "Bigtable: A Distributed Storage System for Structured Data." In the same year, Yahoo! releases an open source version named Apache Hadoop.

January 2008

In order to solve the issue of storing and processing large amounts of data with different sensitivity level, a team of computer scientists and mathematicians in NSA are evaluating various big data technologies.

July 2008

The NSA team decides to begin a new Bigtable implementation.

September 2011

Accumulo becomes a public open source incubator project hosted by Apache Software Foundation.

March 2012

Version 1.3.5 is released. This is the first publicly available version.

April 2012

Version 1.4 is released.

May 2013

Version 1.5 is released. This version incorporates Thrift proxy and table import/export into Accumulo.

May 2014

Version 1.6 is released.

Compression

Prefix Compression

Accumulo emploies two compression techniques. The first one is running GZip or LZO on blocks of data that are stored on disk. The second one is relative-key encoding, which allows the common prefixes of keys to be stored only once, and the following keys only need to store the difference.

Storage Architecture

Disk-oriented

Accumulo is a disk-oriented database that relies on HDFS to store data.

Query Interface

Custom API Command-line / Shell

Accumulo provides the user with two ways to interact with the system. The first one is to use a client. It supports C++, Python, Java and Ruby. It also has a simple shell that allows the user to examine the content, update configuration settings, insert/update/delete values, etc.

System Architecture

Shared-Nothing

Relying on HDFS to manage files, Accumulo applies a Shared-Nothing architecture.