/[Apache-SVN]
ViewVC logotype

Revision 1236031


Jump to revision: Previous Next
Author: mbautin
Date: Thu Jan 26 02:58:57 2012 UTC (12 years, 8 months ago)
Changed paths: 93
Log Message:
[jira] [HBASE-4218] HFile data block encoding framework and delta encoding
implementation (Jacek Midgal, Mikhail Bautin)

Summary:

Adding a framework that allows to "encode" keys in an HFile data block. We
support two modes of encoding: (1) both on disk and in cache, and (2) in cache
only. This is distinct from compression that is already being done in HBase,
e.g. GZ or LZO. When data block encoding is enabled, we store blocks in cache
in an uncompressed but encoded form. This allows to fit more blocks in cache
and reduce the number of disk reads.

The most common example of data block encoding is delta encoding, where we take
advantage of the fact that HFile keys are sorted and share a lot of common
prefixes, and only store the delta between each pair of consecutive keys.
Initial encoding algorithms implemented are DIFF, FAST_DIFF, and PREFIX.

This is based on the delta encoding patch developed by Jacek Midgal during his
2011 summer internship at Facebook. The original patch is available here:
https://reviews.apache.org/r/2308/diff/.

Test Plan: Unit tests. Distributed load test on a five-node cluster.

Reviewers: JIRA, tedyu, stack, nspiegelberg, Kannan

Reviewed By: Kannan

CC: tedyu, todd, mbautin, stack, Kannan, mcorgan, gqchen

Differential Revision: https://reviews.facebook.net/D447



Changed paths

Path Details
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/HColumnDescriptor.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/HConstants.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/KeyValue.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/HalfStoreFileReader.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/CompressionState.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/CopyKeyDataBlockEncoder.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoder.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/DiffKeyDeltaEncoder.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/EncodedDataBlock.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/EncoderBufferTooSmallException.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/FastDiffDeltaEncoder.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/encoding/PrefixKeyDeltaEncoder.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/AbstractHFileReader.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/AbstractHFileWriter.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/BlockCacheKey.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/BlockType.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/HFile.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV1.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileWriterV1.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileWriterV2.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/LruBlockCache.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/io/hfile/NoOpDataBlockEncoder.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/mapreduce/LoadIncrementalHFiles.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/MemStore.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/Store.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFile.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileScanner.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/metrics/SchemaConfigured.java modified , text changed
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/util/ByteBufferUtils.java added
Directoryhbase/trunk/src/main/java/org/apache/hadoop/hbase/util/CompoundBloomFilter.java modified , text changed
Directoryhbase/trunk/src/main/ruby/hbase/admin.rb modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/BROKE_TODO_FIX_TestAcidGuarantees.java deleted
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/HBaseTestCase.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/HFilePerformanceEvaluation.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/TestAcidGuarantees.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/TestKeyValue.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/TestHalfStoreFileReader.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/TestHeapSize.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/encoding/RedundantKVGenerator.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/encoding/TestBufferedDataBlockEncoder.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/encoding/TestEncodedSeekers.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/encoding/TestLoadAndSwitchEncodeOnDisk.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/encoding/TestUpgradeFromHFileV1ToEncoding.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/hfile/CacheTestUtils.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFile.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileBlock.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileBlockIndex.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileDataBlockEncoder.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFilePerformance.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/io/hfile/TestHFileWriterV2.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/mapreduce/TestImportExport.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/CreateRandomStoreFile.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/EncodedSeekPerformanceTest.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/HFileReadWriteTest.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompactSelection.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompaction.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestFSErrorsExposed.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestMultiColumnScanner.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestScanWithBloomError.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/TestStoreFile.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestLogRolling.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/regionserver/wal/TestWALReplay.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/util/LoadTestKVGenerator.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/util/LoadTestTool.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MultiThreadedReader.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/util/MultiThreadedWriter.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/util/RestartMetaTest.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestByteBufferUtils.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestLoadTestKVGenerator.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadEncoded.java added
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadParallel.java modified , text changed
Directoryhbase/trunk/src/test/java/org/apache/hadoop/hbase/util/TestMiniClusterLoadSequential.java modified , text changed

infrastructure at apache.org
ViewVC Help
Powered by ViewVC 1.1.26