diff --git a/hbase-common/src/main/resources/hbase-default.xml b/hbase-common/src/main/resources/hbase-default.xml index a4e6578d89e..7b718962633 100644 --- a/hbase-common/src/main/resources/hbase-default.xml +++ b/hbase-common/src/main/resources/hbase-default.xml @@ -1063,15 +1063,6 @@ possible configurations would overwhelm and obscure the important. false Use Thrift TCompactProtocol binary serialization protocol. - - hbase.offheapcache.percentage - 0 - The percentage of the off heap space (-XX:MaxDirectMemorySize) to be - allocated towards the experimental off heap "SlabCache" (This is different to - the BucketCache -- see the package javadoc for org.apache.hadoop.hbase.io.hfile - for more on your options). If you desire the cache to be disabled, simply set this - value to 0. - hbase.data.umask.enable false diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java index b8dd80ee09b..82bbeee2e9a 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java @@ -111,7 +111,6 @@ public class CacheConfig { public static final boolean DEFAULT_BUCKET_CACHE_COMBINED = true; public static final int DEFAULT_BUCKET_CACHE_WRITER_THREADS = 3; public static final int DEFAULT_BUCKET_CACHE_WRITER_QUEUE = 64; - public static final float DEFAULT_BUCKET_CACHE_COMBINED_PERCENTAGE = 0.9f; /** * Configuration key to prefetch all blocks of a given file into the block cache diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapred/TestTableSnapshotInputFormat.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapred/TestTableSnapshotInputFormat.java index fb13d703b49..9fb83e13c8d 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapred/TestTableSnapshotInputFormat.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapred/TestTableSnapshotInputFormat.java @@ -115,9 +115,6 @@ public class TestTableSnapshotInputFormat extends TableSnapshotInputFormatTestBa "Snapshot job should be configured for default LruBlockCache.", HConstants.HFILE_BLOCK_CACHE_SIZE_DEFAULT, job.getFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, -1), 0.01); - Assert.assertEquals( - "Snapshot job should not use SlabCache.", - 0, job.getFloat("hbase.offheapcache.percentage", -1), 0.01); Assert.assertEquals( "Snapshot job should not use BucketCache.", 0, job.getFloat("hbase.bucketcache.size", -1), 0.01); diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.java index 9e7102d24cc..ea238895380 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.java @@ -162,9 +162,6 @@ public class TestTableSnapshotInputFormat extends TableSnapshotInputFormatTestBa "Snapshot job should be configured for default LruBlockCache.", HConstants.HFILE_BLOCK_CACHE_SIZE_DEFAULT, job.getConfiguration().getFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, -1), 0.01); - Assert.assertEquals( - "Snapshot job should not use SlabCache.", - 0, job.getConfiguration().getFloat("hbase.offheapcache.percentage", -1), 0.01); Assert.assertEquals( "Snapshot job should not use BucketCache.", 0, job.getConfiguration().getFloat("hbase.bucketcache.size", -1), 0.01); diff --git a/src/main/docbkx/book.xml b/src/main/docbkx/book.xml index 603839ccd89..e585adced64 100644 --- a/src/main/docbkx/book.xml +++ b/src/main/docbkx/book.xml @@ -2082,8 +2082,8 @@ rs.close(); xml:id="block.cache"> Block Cache - HBase provides three different BlockCache implementations: the default onheap - LruBlockCache, BucketCache, and SlabCache, which are both (usually) offheap. This section + HBase provides two different BlockCache implementations: the default onheap + LruBlockCache and BucketCache, which is (usually) offheap. This section discusses benefits and drawbacks of each implementation, how to choose the appropriate option, and configuration options for each. @@ -2099,9 +2099,7 @@ rs.close(); LruBlockCache is the original implementation, and is entirely within the Java heap. BucketCache is mainly intended for keeping blockcache data offheap, although BucketCache can also - keep data onheap and serve from a file-backed cache. There is also an older - offheap BlockCache, called SlabCache that has since been deprecated and - removed in HBase 1.0. + keep data onheap and serve from a file-backed cache. Fetching will always be slower when fetching from BucketCache, @@ -2292,30 +2290,6 @@ rs.close();
Offheap Block Cache -
- How to Enable SlabCache - SlabCache is deprecated and will be removed in 1.0! - SlabCache is originally described in Caching - in Apache HBase: SlabCache. Quoting from the API documentation for DoubleBlockCache, - the hosting class for SlabCache deploys, - DoubleBlockCache is an abstraction layer that combines two caches, the smaller onHeapCache and the - larger offHeapCache. CacheBlock attempts to cache the block in both caches, while - readblock reads first from the faster on heap cache before looking for the block in - the off heap cache. Metrics are the combined size and hits and misses of both - caches. - To enable SlabCache, set the float - hbase.offheapcache.percentage to some value between 0 and 1 in - the hbase-site.xml file on the RegionServer. The value will be multiplied by the - setting for -XX:MaxDirectMemorySize in the RegionServer's - hbase-env.sh configuration file and the result is used by - SlabCache as its offheap store. The onheap store will be the value of the float - HConstants.HFILE_BLOCK_CACHE_SIZE_KEY setting (some value between - 0 and 1) multiplied by the size of the allocated Java heap. - Restart (or rolling restart) your cluster for the configurations to take effect. - Check logs for errors or unexpected behavior. -
How to Enable BucketCache The usual deploy of BucketCache is via a managing class that sets up two caching tiers: an L1 onheap cache diff --git a/src/main/docbkx/upgrading.xml b/src/main/docbkx/upgrading.xml index 23c3636c44b..ca7a9862219 100644 --- a/src/main/docbkx/upgrading.xml +++ b/src/main/docbkx/upgrading.xml @@ -428,27 +428,6 @@ Successfully completed Log splitting setup a secure HBase is on the way.
-
- Experimental off-heap cache: SlabCache - A new cache was contributed to 0.92.0 to act as a solution between using the - “on-heap” cache which is the current LRU cache the region servers have and the - operating system cache which is out of our control. To enable - SlabCache, as this feature is being called, set - “-XX:MaxDirectMemorySize” in hbase-env.sh to the value for maximum direct memory - size and specify hbase.offheapcache.percentage in - hbase-site.xml with the percentage that you want to - dedicate to off-heap cache. This should only be set for servers and not for clients. - Use at your own risk. See this blog post, Caching - in Apache HBase: SlabCache, for additional information on this new - experimental feature. - This feature has mostly been eclipsed in later HBases. See HBASE-7404 Bucket - Cache:A solution about CMS,Heap Fragment and Big Cache on HBASE, - etc. -
-
Changes in HBase replication 0.92.0 adds two new features: multi-slave and multi-master replication. The way to