HBASE-6384 hbck should group together those sidelined regions need to be bulk loaded later
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1361034 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
349c82e0a0
commit
6b3f368bd9
@ -149,6 +149,7 @@ public class HBaseFsck {
|
|||||||
private static boolean rsSupportsOffline = true;
|
private static boolean rsSupportsOffline = true;
|
||||||
private static final int DEFAULT_OVERLAPS_TO_SIDELINE = 2;
|
private static final int DEFAULT_OVERLAPS_TO_SIDELINE = 2;
|
||||||
private static final int DEFAULT_MAX_MERGE = 5;
|
private static final int DEFAULT_MAX_MERGE = 5;
|
||||||
|
private static final String TO_BE_LOADED = "to_be_loaded";
|
||||||
|
|
||||||
/**********************
|
/**********************
|
||||||
* Internal resources
|
* Internal resources
|
||||||
@ -869,8 +870,20 @@ public class HBaseFsck {
|
|||||||
/**
|
/**
|
||||||
* Sideline a region dir (instead of deleting it)
|
* Sideline a region dir (instead of deleting it)
|
||||||
*/
|
*/
|
||||||
Path sidelineRegionDir(FileSystem fs, HbckInfo hi)
|
Path sidelineRegionDir(FileSystem fs, HbckInfo hi) throws IOException {
|
||||||
throws IOException {
|
return sidelineRegionDir(fs, null, hi);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sideline a region dir (instead of deleting it)
|
||||||
|
*
|
||||||
|
* @param parentDir if specified, the region will be sidelined to
|
||||||
|
* folder like .../parentDir/<table name>/<region name>. The purpose
|
||||||
|
* is to group together similar regions sidelined, for example, those
|
||||||
|
* regions should be bulk loaded back later on. If null, it is ignored.
|
||||||
|
*/
|
||||||
|
Path sidelineRegionDir(FileSystem fs,
|
||||||
|
String parentDir, HbckInfo hi) throws IOException {
|
||||||
String tableName = Bytes.toString(hi.getTableName());
|
String tableName = Bytes.toString(hi.getTableName());
|
||||||
Path regionDir = hi.getHdfsRegionDir();
|
Path regionDir = hi.getHdfsRegionDir();
|
||||||
|
|
||||||
@ -879,7 +892,11 @@ public class HBaseFsck {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
Path sidelineTableDir= new Path(getSidelineDir(), tableName);
|
Path rootDir = getSidelineDir();
|
||||||
|
if (parentDir != null) {
|
||||||
|
rootDir = new Path(rootDir, parentDir);
|
||||||
|
}
|
||||||
|
Path sidelineTableDir= new Path(rootDir, tableName);
|
||||||
Path sidelineRegionDir = new Path(sidelineTableDir, regionDir.getName());
|
Path sidelineRegionDir = new Path(sidelineTableDir, regionDir.getName());
|
||||||
fs.mkdirs(sidelineRegionDir);
|
fs.mkdirs(sidelineRegionDir);
|
||||||
boolean success = false;
|
boolean success = false;
|
||||||
@ -1958,7 +1975,7 @@ public class HBaseFsck {
|
|||||||
offline(regionToSideline.getRegionName());
|
offline(regionToSideline.getRegionName());
|
||||||
|
|
||||||
LOG.info("Before sideline big overlapped region: " + regionToSideline.toString());
|
LOG.info("Before sideline big overlapped region: " + regionToSideline.toString());
|
||||||
Path sidelineRegionDir = sidelineRegionDir(fs, regionToSideline);
|
Path sidelineRegionDir = sidelineRegionDir(fs, TO_BE_LOADED, regionToSideline);
|
||||||
if (sidelineRegionDir != null) {
|
if (sidelineRegionDir != null) {
|
||||||
sidelinedRegions.put(sidelineRegionDir, regionToSideline);
|
sidelinedRegions.put(sidelineRegionDir, regionToSideline);
|
||||||
LOG.info("After sidelined big overlapped region: "
|
LOG.info("After sidelined big overlapped region: "
|
||||||
|
Loading…
x
Reference in New Issue
Block a user