Apache Accumulo Examples
Before running any of the examples, the following steps must be performed.
Install and run Accumulo via the instructions found in INSTALL.md of Accumulo's tarball. Remember the instance name. It will be referred to as "instance" throughout the examples. A comma-separated list of zookeeper servers will be referred to as "zookeepers".
Create an Accumulo user (for help see the 'User Administration' section of the user manual), or use the root user. This user and their password should replace any reference to "username" or "password" in the examples. This user needs the ability to create tables.
Clone and build this repository.
git clone https://github.com/apache/accumulo-examples.git mvn clean package
Specify Accumulo connection information in
conf/accumulo-client.properties. Some old examples still read connection information from an examples.conf file so that should also be configured.
cd accumulo-examples nano conf/accumulo-client.properties cp examples.conf.template examples.conf nano examples.conf
The examples have some custom iterators that need to be executed by Accumulo tablet servers. Make them available by copying the accumulo-examples.jar to Accumulo's
cp target/accumulo-examples-X.Y.Z.jar /path/accumulo/lib/ext/
Each Accumulo example has its own documentation and instructions for running the example which are linked to below.
When running the examples, remember the tips below:
- Examples are run using the
runexcommand which is located in the
bin/directory of this repo. The
runexcommand is a simple wrapper around the Maven Exec plugin.
- Commands intended to be run in bash are prefixed by '$' and should be run from the root of this repository.
- Several examples use the
accumulo-utilcommands which are expected to be on your
PATH. These commands are found in the
bin/directory of your Accumulo installation.
- Commands intended to be run in the Accumulo shell are prefixed by '>'.
Each example below highlights a feature of Apache Accumulo.
|batch||Using the batch writer and batch scanner|
|bloom||Creating a bloom filter enabled table to increase query performance|
|bulkIngest||Ingesting bulk data using map/reduce jobs on Hadoop|
|classpath||Using per-table classpaths|
|client||Using table operations, reading and writing data in Java.|
|combiner||Using example StatsCombiner to find min, max, sum, and count.|
|compactionStrategy||Configuring a compaction strategy|
|constraints||Using constraints with tables.|
|dirlist||Storing filesystem information.|
|export||Exporting and importing tables.|
|filedata||Storing file data.|
|filter||Using the AgeOffFilter to remove records more than 30 seconds old.|
|helloworld||Inserting records both inside map/reduce jobs and outside. And reading records between two rows.|
|isolation||Using the isolated scanner to ensure partial changes are not seen.|
|mapred||Using MapReduce to read from and write to Accumulo tables.|
|maxmutation||Limiting mutation size to avoid running out of memory.|
|regex||Using MapReduce and Accumulo to find data using regular expressions.|
|reservations||Using conditional mutations to implement simple reservation system.|
|rgbalancer||Using a balancer to spread groups of tablets within a table evenly|
|rowhash||Using MapReduce to read a table and write to a new column in the same table.|
|sample||Building and using sample data in Accumulo.|
|shard||Using the intersecting iterator with a term index partitioned by document.|
|tabletofile||Using MapReduce to read a table and write one of its columns to a file in HDFS.|
|terasort||Generating random data and sorting it using Accumulo.|
|visibility||Using visibilities (or combinations of authorizations). Also shows user permissions.|
This repository can be used to test Accumulo release candidates. See docs/release-testing.md.