Search in sources :

Example 1 with HeapSize

use of org.apache.hadoop.hbase.io.HeapSize in project hbase by apache.

the class TestLruAdaptiveBlockCache method testCacheSimple.

@Test
public void testCacheSimple() throws Exception {
    long maxSize = 1000000;
    long blockSize = calculateBlockSizeDefault(maxSize, 101);
    LruAdaptiveBlockCache cache = new LruAdaptiveBlockCache(maxSize, blockSize);
    CachedItem[] blocks = generateRandomBlocks(100, blockSize);
    long expectedCacheSize = cache.heapSize();
    // Confirm empty
    for (CachedItem block : blocks) {
        assertTrue(cache.getBlock(block.cacheKey, true, false, true) == null);
    }
    // Add blocks
    for (CachedItem block : blocks) {
        cache.cacheBlock(block.cacheKey, block);
        expectedCacheSize += block.cacheBlockHeapSize();
    }
    // Verify correctly calculated cache heap size
    assertEquals(expectedCacheSize, cache.heapSize());
    // Check if all blocks are properly cached and retrieved
    for (CachedItem block : blocks) {
        HeapSize buf = cache.getBlock(block.cacheKey, true, false, true);
        assertTrue(buf != null);
        assertEquals(buf.heapSize(), block.heapSize());
    }
    // Re-add same blocks and ensure nothing has changed
    long expectedBlockCount = cache.getBlockCount();
    for (CachedItem block : blocks) {
        cache.cacheBlock(block.cacheKey, block);
    }
    assertEquals("Cache should ignore cache requests for blocks already in cache", expectedBlockCount, cache.getBlockCount());
    // Verify correctly calculated cache heap size
    assertEquals(expectedCacheSize, cache.heapSize());
    // Check if all blocks are properly cached and retrieved
    for (CachedItem block : blocks) {
        HeapSize buf = cache.getBlock(block.cacheKey, true, false, true);
        assertTrue(buf != null);
        assertEquals(buf.heapSize(), block.heapSize());
    }
    // Expect no evictions
    assertEquals(0, cache.getStats().getEvictionCount());
    Thread t = new LruAdaptiveBlockCache.StatisticsThread(cache);
    t.start();
    t.join();
}
Also used : HeapSize(org.apache.hadoop.hbase.io.HeapSize) EvictionThread(org.apache.hadoop.hbase.io.hfile.LruAdaptiveBlockCache.EvictionThread) Test(org.junit.Test)

Example 2 with HeapSize

use of org.apache.hadoop.hbase.io.HeapSize in project hbase by apache.

the class TestHFileDataBlockEncoder method testEncodingWithCacheInternals.

private void testEncodingWithCacheInternals(boolean useTag) throws IOException {
    List<KeyValue> kvs = generator.generateTestKeyValues(60, useTag);
    HFileBlock block = getSampleHFileBlock(kvs, useTag);
    HFileBlock cacheBlock = createBlockOnDisk(conf, kvs, block, useTag);
    LruBlockCache blockCache = new LruBlockCache(8 * 1024 * 1024, 32 * 1024);
    BlockCacheKey cacheKey = new BlockCacheKey("test", 0);
    blockCache.cacheBlock(cacheKey, cacheBlock);
    HeapSize heapSize = blockCache.getBlock(cacheKey, false, false, true);
    assertTrue(heapSize instanceof HFileBlock);
    HFileBlock returnedBlock = (HFileBlock) heapSize;
    if (blockEncoder.getDataBlockEncoding() == DataBlockEncoding.NONE) {
        assertEquals(block.getBufferReadOnly(), returnedBlock.getBufferReadOnly());
    } else {
        if (BlockType.ENCODED_DATA != returnedBlock.getBlockType()) {
            System.out.println(blockEncoder);
        }
        assertEquals(BlockType.ENCODED_DATA, returnedBlock.getBlockType());
    }
}
Also used : KeyValue(org.apache.hadoop.hbase.KeyValue) HeapSize(org.apache.hadoop.hbase.io.HeapSize)

Example 3 with HeapSize

use of org.apache.hadoop.hbase.io.HeapSize in project hbase by apache.

the class TestTinyLfuBlockCache method testCacheSimple.

@Test
public void testCacheSimple() throws Exception {
    long maxSize = 1000000;
    long blockSize = calculateBlockSizeDefault(maxSize, 101);
    TinyLfuBlockCache cache = new TinyLfuBlockCache(maxSize, blockSize, blockSize, Runnable::run);
    CachedItem[] blocks = generateRandomBlocks(100, blockSize);
    long expectedCacheSize = cache.heapSize();
    // Confirm empty
    for (CachedItem block : blocks) {
        assertTrue(cache.getBlock(block.cacheKey, true, false, true) == null);
    }
    // Add blocks
    for (CachedItem block : blocks) {
        cache.cacheBlock(block.cacheKey, block);
        expectedCacheSize += block.heapSize();
    }
    // Verify correctly calculated cache heap size
    assertEquals(expectedCacheSize, cache.heapSize());
    // Check if all blocks are properly cached and retrieved
    for (CachedItem block : blocks) {
        HeapSize buf = cache.getBlock(block.cacheKey, true, false, true);
        assertTrue(buf != null);
        assertEquals(buf.heapSize(), block.heapSize());
    }
    // Re-add same blocks and ensure nothing has changed
    long expectedBlockCount = cache.getBlockCount();
    for (CachedItem block : blocks) {
        cache.cacheBlock(block.cacheKey, block);
    }
    assertEquals("Cache should ignore cache requests for blocks already in cache", expectedBlockCount, cache.getBlockCount());
    // Verify correctly calculated cache heap size
    assertEquals(expectedCacheSize, cache.heapSize());
    // Check if all blocks are properly cached and retrieved
    for (CachedItem block : blocks) {
        HeapSize buf = cache.getBlock(block.cacheKey, true, false, true);
        assertTrue(buf != null);
        assertEquals(buf.heapSize(), block.heapSize());
    }
    // Expect no evictions
    assertEquals(0, cache.getStats().getEvictionCount());
}
Also used : HeapSize(org.apache.hadoop.hbase.io.HeapSize) Test(org.junit.Test)

Example 4 with HeapSize

use of org.apache.hadoop.hbase.io.HeapSize in project hbase by apache.

the class TestLruBlockCache method testCacheSimple.

@Test
public void testCacheSimple() throws Exception {
    long maxSize = 1000000;
    long blockSize = calculateBlockSizeDefault(maxSize, 101);
    LruBlockCache cache = new LruBlockCache(maxSize, blockSize);
    CachedItem[] blocks = generateRandomBlocks(100, blockSize);
    long expectedCacheSize = cache.heapSize();
    // Confirm empty
    for (CachedItem block : blocks) {
        assertTrue(cache.getBlock(block.cacheKey, true, false, true) == null);
    }
    // Add blocks
    for (CachedItem block : blocks) {
        cache.cacheBlock(block.cacheKey, block);
        expectedCacheSize += block.cacheBlockHeapSize();
    }
    // Verify correctly calculated cache heap size
    assertEquals(expectedCacheSize, cache.heapSize());
    // Check if all blocks are properly cached and retrieved
    for (CachedItem block : blocks) {
        HeapSize buf = cache.getBlock(block.cacheKey, true, false, true);
        assertTrue(buf != null);
        assertEquals(buf.heapSize(), block.heapSize());
    }
    // Re-add same blocks and ensure nothing has changed
    long expectedBlockCount = cache.getBlockCount();
    for (CachedItem block : blocks) {
        cache.cacheBlock(block.cacheKey, block);
    }
    assertEquals("Cache should ignore cache requests for blocks already in cache", expectedBlockCount, cache.getBlockCount());
    // Verify correctly calculated cache heap size
    assertEquals(expectedCacheSize, cache.heapSize());
    // Check if all blocks are properly cached and retrieved
    for (CachedItem block : blocks) {
        HeapSize buf = cache.getBlock(block.cacheKey, true, false, true);
        assertTrue(buf != null);
        assertEquals(buf.heapSize(), block.heapSize());
    }
    // Expect no evictions
    assertEquals(0, cache.getStats().getEvictionCount());
    Thread t = new LruBlockCache.StatisticsThread(cache);
    t.start();
    t.join();
}
Also used : HeapSize(org.apache.hadoop.hbase.io.HeapSize) EvictionThread(org.apache.hadoop.hbase.io.hfile.LruBlockCache.EvictionThread) Test(org.junit.Test)

Aggregations

HeapSize (org.apache.hadoop.hbase.io.HeapSize)4 Test (org.junit.Test)3 KeyValue (org.apache.hadoop.hbase.KeyValue)1 EvictionThread (org.apache.hadoop.hbase.io.hfile.LruAdaptiveBlockCache.EvictionThread)1 EvictionThread (org.apache.hadoop.hbase.io.hfile.LruBlockCache.EvictionThread)1