I was browsing the HBase codebase and noticed that many components in regionserver module (org.apache.hadoop.hbase.regionserver) had been refactored to become pluggable. This is a cleaner design because it means different implementations of these components can be plugged into HBase easily. Among the new interfaces are
Store, Memstore
The corresponding Implementation classes are
HStore implements Store
DefaultMemoryStore implements Memstore
Furthermore, StoreEngine is now an abstract class and acts as a factory to create StoreFileManager, CompactionPolicy and Compactor.
DefaultStoreEngine extends StoreEngine to create the default compactor, policy, and store file manager. This makes storefile management and compaction pluggable.
You can refer to the corresponding Jira and design doc
https://issues.apache.org/jira/browse/HBASE-7678
https://issues.apache.org/jira/secure/attachment/12568488/Pluggable%20compactions%20doc.pdf