[ 
https://issues.apache.org/jira/browse/HBASE-8894?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13783441#comment-13783441
 ] 

Alex Feinberg commented on HBASE-8894:
--------------------------------------

Vladimir,

Those are very legitimate issues:

1) One approach around the on-heap keys (not an issue in my setup as I was not 
using file based cache, but certainly an issue with fusion IO) could be to use 
a hash table (with extension array) or (in cases where the block index is 
expected to not fit in ram) a b-tree over direct/memory-mapped byte buffers. 
This would be tricky to implement but it has been done:
https://github.com/jankotek/MapDB/tree/master/src/main/java/org/mapdb

2) Eviction algorithm is indeed primitive (and also high on priority of things 
to fix), but as far as I re-call eviction ( freeSpace() here -- 
https://github.com/apache/hbase/blob/0.89-fb/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java#L488-625
 )  only blocks draining to the ioEngine -- in other words, while the cache 
space is being free you can still use read from the cache (this uses striped 
locking) -- and writes will enter RAMCache and be queued for the ioEngine ( 
https://github.com/apache/hbase/blob/0.89-fb/src/main/java/org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java#L648-660
 ). All IOEngine draining threads will be blocked during eviction, however -- 
that may be more problematic for file-based caches -- long draining may cause a 
lot of entries to be built up in RAMCache. If the queue is full the threads 
will be blocked, but you can configure to wait up to a maximum amount -- but 
this doesn't affect actual writes to HBase, as with L2Cache writes only happen 
during flushes (i.e., flushes will take longer if they happen during eviction).

Thanks,
- af

> Forward port compressed l2 cache from 0.89fb
> --------------------------------------------
>
>                 Key: HBASE-8894
>                 URL: https://issues.apache.org/jira/browse/HBASE-8894
>             Project: HBase
>          Issue Type: New Feature
>            Reporter: stack
>            Assignee: Liang Xie
>            Priority: Critical
>             Fix For: 0.98.0
>
>
> Forward port Alex's improvement on hbase-7407 from 0.89-fb branch:
> {code}
>   1 r1492797 | liyin | 2013-06-13 11:18:20 -0700 (Thu, 13 Jun 2013) | 43 lines
>   2
>   3 [master] Implements a secondary compressed cache (L2 cache)
>   4
>   5 Author: avf
>   6
>   7 Summary:
>   8 This revision implements compressed and encoded second-level cache with 
> off-heap
>   9 (and optionally on-heap) storage and a bucket-allocator based on 
> HBASE-7404.
>  10
>  11 BucketCache from HBASE-7404 is extensively modified to:
>  12
>  13 * Only handle byte arrays (i.e., no more serialization/deserialization 
> within)
>  14 * Remove persistence support for the time being
>  15 * Keep an  index of hfilename to blocks for efficient eviction on close
>  16
>  17 A new interface (L2Cache) is introduced in order to separate it from the 
> current
>  18 implementation. The L2 cache is then integrated into the classes that 
> handle
>  19 reading from and writing to HFiles to allow cache-on-write as well as
>  20 cache-on-read. Metrics for the L2 cache are integrated into 
> RegionServerMetrics
>  21 much in the same fashion as metrics for the existing (L2) BlockCache.
>  22
>  23 Additionally, CacheConfig class is re-refactored to configure the L2 
> cache,
>  24 replace multile constructors with a Builder, as well as replace static 
> methods
>  25 for instantiating the caches with abstract factories (with singleton
>  26 implementations for both the existing LruBlockCache and the newly 
> introduced
>  27 BucketCache based L2 cache)
>  28
>  29 Test Plan:
>  30 1) Additional unit tests
>  31 2) Stress test on a single devserver
>  32 3) Test on a single-node in shadow cluster
>  33 4) Test on a whole shadow cluster
>  34
>  35 Revert Plan:
>  36
>  37 Reviewers: liyintang, aaiyer, rshroff, manukranthk, adela
>  38
>  39 Reviewed By: liyintang
>  40
>  41 CC: gqchen, hbase-eng@
>  42
>  43 Differential Revision: https://phabricator.fb.com/D837264
>  44
>  45 Task ID: 2325295
>  7 ------------------------------------------------------------------------
>   6 r1492340 | liyin | 2013-06-12 11:36:03 -0700 (Wed, 12 Jun 2013) | 21 lines
> {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to