@InterfaceAudience.Private public class CombinedBlockCache extends Object implements ResizableBlockCache, HeapSize
FirstLevelBlockCache and
BucketCache. The smaller lruCache is used to cache bloom blocks and index blocks. The
larger Cache is used to cache data blocks.
getBlock(BlockCacheKey, boolean, boolean, boolean) reads first from the smaller l1Cache
before looking for the block in the l2Cache. Blocks evicted from l1Cache are put into the bucket
cache. Metrics are the combined size and hits and misses of both caches.| Modifier and Type | Class and Description |
|---|---|
static class |
CombinedBlockCache.CombinedCacheStats |
| Modifier and Type | Field and Description |
|---|---|
protected CombinedBlockCache.CombinedCacheStats |
combinedCacheStats |
protected FirstLevelBlockCache |
l1Cache |
protected BlockCache |
l2Cache |
| Constructor and Description |
|---|
CombinedBlockCache(FirstLevelBlockCache l1Cache,
BlockCache l2Cache) |
| Modifier and Type | Method and Description |
|---|---|
void |
cacheBlock(BlockCacheKey cacheKey,
Cacheable buf)
Add block to cache (defaults to not in-memory).
|
void |
cacheBlock(BlockCacheKey cacheKey,
Cacheable buf,
boolean inMemory)
Add block to cache.
|
boolean |
evictBlock(BlockCacheKey cacheKey)
Evict block from cache.
|
int |
evictBlocksByHfileName(String hfileName)
Evicts all blocks for the given HFile.
|
Cacheable |
getBlock(BlockCacheKey cacheKey,
boolean caching,
boolean repeat,
boolean updateCacheMetrics)
Fetch block from cache.
|
BlockCache[] |
getBlockCaches()
Returns The list of sub blockcaches that make up this one; returns null if no sub caches.
|
long |
getBlockCount()
Returns the number of blocks currently cached in the block cache.
|
long |
getCurrentDataSize()
Returns the occupied size of data blocks, in bytes.
|
long |
getCurrentSize()
Returns the occupied size of the block cache, in bytes.
|
long |
getDataBlockCount()
Returns the number of data blocks currently cached in the block cache.
|
FirstLevelBlockCache |
getFirstLevelCache() |
long |
getFreeSize()
Returns the free size of the block cache, in bytes.
|
long |
getMaxSize()
Returns the Max size of the block cache, in bytes.
|
int |
getRpcRefCount(BlockCacheKey cacheKey) |
BlockCache |
getSecondLevelCache() |
CacheStats |
getStats()
Get the statistics for this block cache.
|
long |
heapSize()
Return the approximate 'exclusive deep size' of implementing object.
|
Iterator<CachedBlock> |
iterator()
Returns Iterator over the blocks in the cache.
|
void |
setMaxSize(long size)
Sets the max heap size that can be used by the BlockCache.
|
void |
shutdown()
Shutdown the cache.
|
long |
size()
Returns the total size of the block cache, in bytes.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitisMetaBlockforEach, spliteratorprotected final FirstLevelBlockCache l1Cache
protected final BlockCache l2Cache
protected final CombinedBlockCache.CombinedCacheStats combinedCacheStats
public CombinedBlockCache(FirstLevelBlockCache l1Cache, BlockCache l2Cache)
public long heapSize()
HeapSizepublic void cacheBlock(BlockCacheKey cacheKey, Cacheable buf, boolean inMemory)
BlockCachecacheBlock in interface BlockCachecacheKey - The block's cache key.buf - The block contents wrapped in a ByteBuffer.inMemory - Whether block should be treated as in-memorypublic void cacheBlock(BlockCacheKey cacheKey, Cacheable buf)
BlockCachecacheBlock in interface BlockCachecacheKey - The block's cache key.buf - The object to cache.public Cacheable getBlock(BlockCacheKey cacheKey, boolean caching, boolean repeat, boolean updateCacheMetrics)
BlockCachegetBlock in interface BlockCachecacheKey - Block to fetch.caching - Whether this request has caching enabled (used for stats)repeat - Whether this is a repeat lookup for the same block (used to avoid
double counting cache misses when doing double-check locking)updateCacheMetrics - Whether to update cache metrics or notpublic boolean evictBlock(BlockCacheKey cacheKey)
BlockCacheevictBlock in interface BlockCachecacheKey - Block to evictpublic int evictBlocksByHfileName(String hfileName)
BlockCacheevictBlocksByHfileName in interface BlockCachepublic CacheStats getStats()
BlockCachegetStats in interface BlockCachepublic void shutdown()
BlockCacheshutdown in interface BlockCachepublic long size()
BlockCachesize in interface BlockCachepublic long getMaxSize()
BlockCachegetMaxSize in interface BlockCachepublic long getCurrentDataSize()
BlockCachegetCurrentDataSize in interface BlockCachepublic long getFreeSize()
BlockCachegetFreeSize in interface BlockCachepublic long getCurrentSize()
BlockCachegetCurrentSize in interface BlockCachepublic long getBlockCount()
BlockCachegetBlockCount in interface BlockCachepublic long getDataBlockCount()
BlockCachegetDataBlockCount in interface BlockCachepublic Iterator<CachedBlock> iterator()
BlockCacheiterator in interface Iterable<CachedBlock>iterator in interface BlockCachepublic BlockCache[] getBlockCaches()
BlockCachegetBlockCaches in interface BlockCachepublic void setMaxSize(long size)
ResizableBlockCachesetMaxSize in interface ResizableBlockCachesize - The max heap size.public int getRpcRefCount(BlockCacheKey cacheKey)
public FirstLevelBlockCache getFirstLevelCache()
public BlockCache getSecondLevelCache()
Copyright © 2007–2020 The Apache Software Foundation. All rights reserved.