Package org.apache.accumulo.core.spi.compaction

This package provides a place for plugin interfaces related to executing compactions. The diagram below shows the functional components in Accumulo related to compactions. Not all of these components are pluggable, but understanding how everything fits together is important for writing a plugin.

Compaction design diagram

The following is a description of each functional component.

  • Compaction Manager A non pluggable component within the tablet server that brings all other components together. The manager will route compactables to compaction services. For each kind of compaction, an individual compactable will be routed to a single compaction service. For example its possible that compactable C1 is routed to service S1 for user compactions and service S2 for system compactions.
    • Compactable A non pluggable component that wraps a Tablet and per table pluggable compaction components. It tracks all information about one or more running compactions that is needed by a compaction service in a thread safe manor. There is a 1 to 1 relationship between compactables and tablets.
      • Compaction Configurer A pluggable component that can optionally be configured per table to dynamically configure file output settings. This supports use cases like using snappy for small files and gzip for large files. See CompactionConfigurer
      • Compaction Dispatcher A pluggable component component that decides which compaction service a table should use for different kinds of compactions. This is configurable by users per table. See CompactionDispatcher
      • Compaction Selector A pluggable component that can optionally be configured per table to periodically select files to compact. This supports use cases like periodically compacting all files because there are too many deletes. See CompactionSelector
      • Compaction Strategy A deprecated pluggable component replaced by the Selector and Configurer. See org.apache.accumulo.core.client.admin.CompactionStrategyConfig's own documentation for more information about why it was deprecated.
See Also:
org.apache.accumulo.core.spi