Model REST interface for Accumulo
JavaScript Java
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

Accumulo REST

Accumulo doesn't have a standard rest interface. This is an attempt to fix that. It tries to emulate the Accumulo Client API as close as possible. Hopefully it will at least trigger a REST design discussion for Accumulo.


Add the following properties to your accumulo-site.xml modifying where appropriate:


Start Accumulo, Clone the repo, fire up a local jetty to test things out

mvn jetty:run

Point a browser to http://localhost:8080/accumulo/

To deploy to your existing evironment

mvn package war:war    

will create target/accumulo-rest.war


  • I've only tested this on my local machine, never in a multi-server environment. Although my machine is Bo$$, I'm sure I screwed something up.
  • Absolutely no http security is built in. none. yet. So don't go deploying this.

Tech Bits

  • JAX-RS webapp that uses JBoss RESTEasy.
  • Google Guice injects a singleton connector into the REST resources, handling necessary Accumulo configuration information (username, password, zookeepers, etc).
  • Root path contains a Single Page Application (SPA) built on AngularJS to interact with the REST api.
  • Everything built as if Accumulo adopts it, (e.g. package names are org.apache.accumulo)
  • Provies a Proxy service for the standard Accumulo Monitor, Hadoop HDFS, and Hadoop MapReduce monitor pages.

What's implemented

I'm starting with GET operations to figure out the base REST API.

  • Properties/[{prefix}] - Properties defined in accumulo configuration.
  • Admin/TableOperations
  • Admin/TableOperations/list
  • Admin/TableOperations/listSplits/{tablename}[?maxsplits=]
  • Admin/TableOperations/exists/{tablename}
  • Admin/TableOperations/create/{tablename}[?limitversion=false/true,timetype=MILLIS/LOGICAL]
  • Admin/TableOperations/offline/{tablename}
  • Admin/TableOperations/online/{tablename}
  • Admin/SecurityOperations -- placeholder for now
  • Admin/InstanceOperations -- placeholder for now
  • Proxy/Monitor
  • Proxy/Mapreduce
  • Proxy/Hdfs
  • Scanner/scan[?table=,
  • js_api/ - Automatically generated javascript API (thanks RESTEasy)


  • Flesh out Remainder of REST API.
  • Javascript test framework
  • Implement server tests -- start embedded Jetty and use HttpClient code?
  • Charting magic for new Monitor
  • Get Proxy links re-routed correctly
  • REST documentation - Swagger? or something like it?
  • Determine Shell route - steal current Monitor like is stubbed or pure javascript version
  • HDFS Javascript Shell? - seperate project?
  • Breakout parts into separate projects?
  • Determine a security method. (OAuth2?)
  • Are base64 scan results ok?
  • Put this list into GitHub


Apache 2 License