You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by sy...@apache.org on 2016/08/17 18:34:53 UTC
[47/50] [abbrv] hbase git commit: HBASE-16404 Make DeleteBloomFilters
work with BloomContext (Ram)
HBASE-16404 Make DeleteBloomFilters work with BloomContext (Ram)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/65c03b05
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/65c03b05
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/65c03b05
Branch: refs/heads/hbase-12439
Commit: 65c03b058c7b4a74f991acc07958be5e7d0e05e6
Parents: 285e104
Author: Ramkrishna <ra...@intel.com>
Authored: Fri Aug 12 15:09:31 2016 +0530
Committer: Ramkrishna <ra...@intel.com>
Committed: Fri Aug 12 15:09:31 2016 +0530
----------------------------------------------------------------------
.../hbase/regionserver/StoreFileWriter.java | 45 +++++++-------------
.../apache/hadoop/hbase/util/BloomContext.java | 9 ++--
.../hadoop/hbase/util/RowBloomContext.java | 4 +-
3 files changed, 23 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/65c03b05/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileWriter.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileWriter.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileWriter.java
index 47a8b25..cb5d12c 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileWriter.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreFileWriter.java
@@ -58,9 +58,9 @@ public class StoreFileWriter implements Compactor.CellSink {
private final BloomFilterWriter deleteFamilyBloomFilterWriter;
private final BloomType bloomType;
private long earliestPutTs = HConstants.LATEST_TIMESTAMP;
- private Cell lastDeleteFamilyCell = null;
private long deleteFamilyCnt = 0;
private BloomContext bloomContext = null;
+ private BloomContext deleteFamilyBloomContext = null;
/**
* timeRangeTrackerSet is used to figure if we were passed a filled-out TimeRangeTracker or not.
@@ -137,6 +137,18 @@ public class StoreFileWriter implements Compactor.CellSink {
LOG.trace("Bloom filter type for " + path + ": " + this.bloomType + ", " +
generalBloomFilterWriter.getClass().getSimpleName());
}
+ // init bloom context
+ switch (bloomType) {
+ case ROW:
+ bloomContext = new RowBloomContext(generalBloomFilterWriter);
+ break;
+ case ROWCOL:
+ bloomContext = new RowColBloomContext(generalBloomFilterWriter);
+ break;
+ default:
+ throw new IOException(
+ "Invalid Bloom filter type: " + bloomType + " (ROW or ROWCOL expected)");
+ }
} else {
// Not using Bloom filters.
this.bloomType = BloomType.NONE;
@@ -148,6 +160,7 @@ public class StoreFileWriter implements Compactor.CellSink {
this.deleteFamilyBloomFilterWriter = BloomFilterFactory
.createDeleteBloomAtWrite(conf, cacheConf,
(int) Math.min(maxKeys, Integer.MAX_VALUE), writer);
+ deleteFamilyBloomContext = new RowBloomContext(deleteFamilyBloomFilterWriter);
} else {
deleteFamilyBloomFilterWriter = null;
}
@@ -213,22 +226,6 @@ public class StoreFileWriter implements Compactor.CellSink {
private void appendGeneralBloomfilter(final Cell cell) throws IOException {
if (this.generalBloomFilterWriter != null) {
- // only add to the bloom filter on a new, unique key
- if (this.bloomContext == null) {
- // init bloom context
- switch (bloomType) {
- case ROW:
- bloomContext = new RowBloomContext(generalBloomFilterWriter);
- break;
- case ROWCOL:
- bloomContext = new RowColBloomContext(generalBloomFilterWriter);
- break;
- default:
- throw new IOException(
- "Invalid Bloom filter type: " + bloomType + " (ROW or ROWCOL expected)");
- }
- }
-
/*
* http://2.bp.blogspot.com/_Cib_A77V54U/StZMrzaKufI/AAAAAAAAADo/ZhK7bGoJdMQ/s400/KeyValue.png
* Key = RowLen + Row + FamilyLen + Column [Family + Qualifier] + TimeStamp
@@ -249,18 +246,8 @@ public class StoreFileWriter implements Compactor.CellSink {
// increase the number of delete family in the store file
deleteFamilyCnt++;
- if (null != this.deleteFamilyBloomFilterWriter) {
- boolean newKey = true;
- if (lastDeleteFamilyCell != null) {
- // hbase:meta does not have blooms. So we need not have special interpretation
- // of the hbase:meta cells
- newKey = !CellUtil.matchingRows(cell, lastDeleteFamilyCell);
- }
- // TODO : Use bloom context for delete family bloom filter also
- if (newKey) {
- this.deleteFamilyBloomFilterWriter.add(cell);
- this.lastDeleteFamilyCell = cell;
- }
+ if (this.deleteFamilyBloomFilterWriter != null) {
+ deleteFamilyBloomContext.writeBloom(cell);
}
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/65c03b05/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomContext.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomContext.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomContext.java
index aab30e0..fc40aaf 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomContext.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/BloomContext.java
@@ -33,10 +33,10 @@ public abstract class BloomContext {
// TODO : Avoid holding references to lastCell
protected Cell lastCell;
- protected BloomFilterWriter generalBloomFilterWriter;
+ protected BloomFilterWriter bloomFilterWriter;
- public BloomContext(BloomFilterWriter generalBloomFilterWriter) {
- this.generalBloomFilterWriter = generalBloomFilterWriter;
+ public BloomContext(BloomFilterWriter bloomFilterWriter) {
+ this.bloomFilterWriter = bloomFilterWriter;
}
public Cell getLastCell() {
@@ -49,8 +49,9 @@ public abstract class BloomContext {
* @throws IOException
*/
public void writeBloom(Cell cell) throws IOException {
+ // only add to the bloom filter on a new, unique key
if (isNewKey(cell)) {
- generalBloomFilterWriter.add(cell);
+ bloomFilterWriter.add(cell);
this.lastCell = cell;
}
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/65c03b05/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RowBloomContext.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RowBloomContext.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RowBloomContext.java
index c61e840..f6e36d4 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RowBloomContext.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/RowBloomContext.java
@@ -31,8 +31,8 @@ import org.apache.hadoop.hbase.regionserver.StoreFile;
@InterfaceAudience.Private
public class RowBloomContext extends BloomContext {
- public RowBloomContext(BloomFilterWriter generalBloomFilterWriter) {
- super(generalBloomFilterWriter);
+ public RowBloomContext(BloomFilterWriter bloomFilterWriter) {
+ super(bloomFilterWriter);
}
public void addLastBloomKey(Writer writer) throws IOException {