Accumulo can be tuned to improve read and write performance.
Read performance
Enable caching on tables to reduce reads to disk.
Enable bloom filters on tables to limit the number of disk lookups.
Decrease the major compaction ratio of a table to decrease the number of files per tablet. Less files reduces the latency of reads.
Decrease the size of data blocks in RFiles by lowering table.file.compress.blocksize which can result in better random seek performance. However, this can increase the size of indexes in the RFile. If the indexes are too large to fit in cache, this can hinder performance. Also, as the index size increases the depth of the index tree in each file may increase. Increasing table.file.compress.blocksize.index can reduce the depth of the tree.
Write performance
Enable native maps on tablet servers to prevent Java garbage collection pauses which can slow ingest.
Pre-split new tables to distribute writes across multiple tablet servers.
Ingest data using multiple clients or bulk ingest to increase ingest throughput.
Increase the major compaction ratio of a table to limit the number of major compactions which improves ingest performance.
On large Accumulo clusters, use multiple HDFS volumes to increase write performance.
Change the compression format used by blocks in RFiles by setting table.file.compress.type to
snappy
. This increases write speed at the expense of using more disk space.