HBASE-27129 Add a config that allows us to configure region-level storage policies (#4547)
Co-authored-by: Tang Tianhang <tianhang.tang@shopee.com> Signed-off-by: Duo Zhang <zhangduo@apache.org>
This commit is contained in:
parent
7ff927dbd8
commit
f238a92b6d
|
@ -256,6 +256,9 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
|||
public static final String SPLIT_IGNORE_BLOCKING_ENABLED_KEY =
|
||||
"hbase.hregion.split.ignore.blocking.enabled";
|
||||
|
||||
public static final String REGION_STORAGE_POLICY_KEY = "hbase.hregion.block.storage.policy";
|
||||
public static final String DEFAULT_REGION_STORAGE_POLICY = "NONE";
|
||||
|
||||
/**
|
||||
* This is for for using HRegion as a local storage, where we may put the recovered edits in a
|
||||
* special place. Once this is set, we will only replay the recovered edits under this directory
|
||||
|
@ -980,6 +983,9 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi
|
|||
coprocessorHost.preOpen();
|
||||
}
|
||||
|
||||
String policyName = this.conf.get(REGION_STORAGE_POLICY_KEY, DEFAULT_REGION_STORAGE_POLICY);
|
||||
this.fs.setStoragePolicy(policyName.trim());
|
||||
|
||||
// Write HRI to a file in case we need to recover hbase:meta
|
||||
// Only the primary replica should write .regioninfo
|
||||
if (this.getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID) {
|
||||
|
|
|
@ -225,6 +225,20 @@ public class HRegionFileSystem {
|
|||
CommonFSUtils.setStoragePolicy(this.fs, getStoreDir(familyName), policyName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set storage policy for a whole region. <br>
|
||||
* <i>"LAZY_PERSIST"</i>, <i>"ALL_SSD"</i>, <i>"ONE_SSD"</i>, <i>"HOT"</i>, <i>"WARM"</i>,
|
||||
* <i>"COLD"</i> <br>
|
||||
* <br>
|
||||
* See {@link org.apache.hadoop.hdfs.protocol.HdfsConstants} for more details.
|
||||
* @param policyName The name of the storage policy: 'HOT', 'COLD', etc. See hadoop 2.6+
|
||||
* org.apache.hadoop.hdfs.protocol.HdfsConstants for possible list e.g 'COLD',
|
||||
* 'WARM', 'HOT', 'ONE_SSD', 'ALL_SSD', 'LAZY_PERSIST'.
|
||||
*/
|
||||
public void setStoragePolicy(String policyName) {
|
||||
CommonFSUtils.setStoragePolicy(this.fs, getRegionDir(), policyName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the storage policy of the directory of CF.
|
||||
* @param familyName The name of column family.
|
||||
|
|
Loading…
Reference in New Issue