diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
index 89117fc79a0..9edc71454c8 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
@@ -251,6 +251,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
@@ -976,6 +979,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) {
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java
index 2d2965d7237..9ac55759d9b 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionFileSystem.java
@@ -225,6 +225,20 @@ public class HRegionFileSystem {
CommonFSUtils.setStoragePolicy(this.fs, getStoreDir(familyName), policyName);
}
+ /**
+ * Set storage policy for a whole region.
+ * "LAZY_PERSIST", "ALL_SSD", "ONE_SSD", "HOT", "WARM",
+ * "COLD"
+ *
+ * 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.