HBase The Definitive Guide Book
Says:
Since flushing memstores to disk causes more and more HFile's to be created, HBase
has a housekeeping mechanism that merges the files into larger ones using
compactions. There are two types of compaction: minor compactions and major
compactions. The former reduce the number of storage files by rewriting smaller files
into fewer but larger ones, performing an n-way merge. Since all the data is already
sorted in each HFile, that merge is fast and bound only by disk IO performance.
The major compactions rewrite all files within a column family for a region into a
single new one. They also have another distinct feature compared to the minor
compactions: based on the fact that they scan all key/value pairs, they can drop
deleted entries including their deletion marker. Predicate deletes are handled here as
well - for example, removing values that have expired according to the configured
time-to-live or when there are too many versions.
so:
1. minor compactions
reduce the number of storage files by rewriting smaller files into fewer but larger ones, performing an n-way merge.
2. major compactions
rewrite all files within a column family for a region into a
single new one. They also have another distinct feature compared to the minor compactions: based on the fact that they scan all key/value pairs, they can drop deleted entries including their deletion marker. Predicate deletes are handled here as well. time-to-live or when there are too many versions.