Repository: hbase Updated Branches: refs/heads/master 69f5d707b -> 0adcb4096
HBASE-13884 Fix Compactions section in HBase book Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/0adcb409 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/0adcb409 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/0adcb409 Branch: refs/heads/master Commit: 0adcb40963392de6731311eb2423d2f9b425d52e Parents: 69f5d70 Author: Michael Stack <st...@apache.org> Authored: Tue Mar 27 17:40:31 2018 -0700 Committer: Michael Stack <st...@apache.org> Committed: Tue Mar 27 17:40:35 2018 -0700 ---------------------------------------------------------------------- src/main/asciidoc/_chapters/architecture.adoc | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/0adcb409/src/main/asciidoc/_chapters/architecture.adoc ---------------------------------------------------------------------- diff --git a/src/main/asciidoc/_chapters/architecture.adoc b/src/main/asciidoc/_chapters/architecture.adoc index 7be5f48..f35e118 100644 --- a/src/main/asciidoc/_chapters/architecture.adoc +++ b/src/main/asciidoc/_chapters/architecture.adoc @@ -1757,9 +1757,20 @@ These parameters will be explained in context, and then will be given in a table ====== Being Stuck When the MemStore gets too large, it needs to flush its contents to a StoreFile. -However, a Store can only have `hbase.hstore.blockingStoreFiles` files, so the MemStore needs to wait for the number of StoreFiles to be reduced by one or more compactions. -However, if the MemStore grows larger than `hbase.hregion.memstore.flush.size`, it is not able to flush its contents to a StoreFile. -If the MemStore is too large and the number of StoreFiles is also too high, the algorithm is said to be "stuck". The compaction algorithm checks for this "stuck" situation and provides mechanisms to alleviate it. +However, Stores are configured with a bound on the number StoreFiles, +`hbase.hstore.blockingStoreFiles`, and if in excess, the MemStore flush must wait +until the StoreFile count is reduced by one or more compactions. If the MemStore +is too large and the number of StoreFiles is also too high, the algorithm is said +to be "stuck". By default we'll wait on compactions up to +`hbase.hstore.blockingWaitTime` milliseconds. If this period expires, we'll flush +anyways even though we are in excess of the +`hbase.hstore.blockingStoreFiles` count. + +Upping the `hbase.hstore.blockingStoreFiles` count will allow flushes to happen +but a Store with many StoreFiles in will likely have higher read latencies. Try to +figure why Compactions are not keeping up. Is it a write spurt that is bringing +about this situation or is a regular occurance and the cluster is under-provisioned +for the volume of writes? [[exploringcompaction.policy]] ====== The ExploringCompactionPolicy Algorithm