HBASE-712 midKey found compacting is the first, not necessarily the optimal
git-svn-id: https://svn.apache.org/repos/asf/hadoop/hbase/trunk@673524 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
48b561e734
commit
3224f18ba7
|
@ -163,6 +163,7 @@ Trunk (unreleased changes)
|
||||||
HBASE-527 RegexpRowFilter does not work when there are columns from
|
HBASE-527 RegexpRowFilter does not work when there are columns from
|
||||||
multiple families (Clint Morgan via Jim Kellerman)
|
multiple families (Clint Morgan via Jim Kellerman)
|
||||||
HBASE-534 Double-assignment at SPLIT-time
|
HBASE-534 Double-assignment at SPLIT-time
|
||||||
|
HBASE-712 midKey found compacting is the first, not necessarily the optimal
|
||||||
|
|
||||||
IMPROVEMENTS
|
IMPROVEMENTS
|
||||||
HBASE-559 MR example job to count table rows
|
HBASE-559 MR example job to count table rows
|
||||||
|
|
|
@ -876,10 +876,12 @@ public class HRegion implements HConstants {
|
||||||
LOG.info("starting compaction on region " + this);
|
LOG.info("starting compaction on region " + this);
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
doRegionCompactionPrep();
|
doRegionCompactionPrep();
|
||||||
|
long maxSize = -1;
|
||||||
for (HStore store: stores.values()) {
|
for (HStore store: stores.values()) {
|
||||||
final byte [] key = store.compact(force);
|
final HStore.StoreSize size = store.compact(force);
|
||||||
if (key != null && midKey == null) {
|
if (size != null && size.getSize() > maxSize) {
|
||||||
midKey = key;
|
maxSize = size.getSize();
|
||||||
|
midKey = size.getKey();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
doRegionCompactionCleanup();
|
doRegionCompactionCleanup();
|
||||||
|
|
|
@ -854,7 +854,7 @@ public class HStore implements HConstants {
|
||||||
* @return mid key if a split is needed, null otherwise
|
* @return mid key if a split is needed, null otherwise
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
*/
|
*/
|
||||||
byte [] compact(final boolean force) throws IOException {
|
StoreSize compact(final boolean force) throws IOException {
|
||||||
synchronized (compactLock) {
|
synchronized (compactLock) {
|
||||||
long maxId = -1;
|
long maxId = -1;
|
||||||
List<HStoreFile> filesToCompact = null;
|
List<HStoreFile> filesToCompact = null;
|
||||||
|
@ -1811,9 +1811,9 @@ public class HStore implements HConstants {
|
||||||
/**
|
/**
|
||||||
* Determines if HStore can be split
|
* Determines if HStore can be split
|
||||||
*
|
*
|
||||||
* @return midKey if store can be split, null otherwise
|
* @return a StoreSize if store can be split, null otherwise
|
||||||
*/
|
*/
|
||||||
byte [] checkSplit() {
|
StoreSize checkSplit() {
|
||||||
if (this.storefiles.size() <= 0) {
|
if (this.storefiles.size() <= 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -1865,7 +1865,7 @@ public class HStore implements HConstants {
|
||||||
Bytes.equals(mk.getRow(), lastKey.getRow())) {
|
Bytes.equals(mk.getRow(), lastKey.getRow())) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return mk.getRow();
|
return new StoreSize(maxSize, mk.getRow());
|
||||||
}
|
}
|
||||||
} catch(IOException e) {
|
} catch(IOException e) {
|
||||||
LOG.warn("Failed getting store size for " + this.storeNameStr, e);
|
LOG.warn("Failed getting store size for " + this.storeNameStr, e);
|
||||||
|
@ -1931,4 +1931,22 @@ public class HStore implements HConstants {
|
||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class StoreSize {
|
||||||
|
private final long size;
|
||||||
|
private final byte[] key;
|
||||||
|
StoreSize(long size, byte[] key) {
|
||||||
|
this.size = size;
|
||||||
|
this.key = new byte[key.length];
|
||||||
|
System.arraycopy(key, 0, this.key, 0, key.length);
|
||||||
|
}
|
||||||
|
/* @return the size */
|
||||||
|
long getSize() {
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
/* @return the key */
|
||||||
|
byte[] getKey() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue