From 9b54e66f3ea6a5a6945d18ba534cfb4f2419facb Mon Sep 17 00:00:00 2001 From: Vinayakumar B Date: Tue, 2 Jun 2015 16:38:43 +0530 Subject: [PATCH] HDFS-8336. Expose some administrative erasure coding operations to HdfsAdmin (Contributed by Uma Maheswara Rao G) --- .../hadoop-hdfs/CHANGES-HDFS-EC-7285.txt | 3 ++ .../apache/hadoop/hdfs/client/HdfsAdmin.java | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt index 01d8cf032a..e7335b2165 100755 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES-HDFS-EC-7285.txt @@ -265,3 +265,6 @@ HDFS-8481. Erasure coding: remove workarounds in client side stripped blocks recovering. (zhz) + + HDFS-8336. Expose some administrative erasure coding operations to HdfsAdmin + (Uma Maheswara Rao G via vinayakumarb) diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/client/HdfsAdmin.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/client/HdfsAdmin.java index 84499bb3d4..5a3c885b49 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/client/HdfsAdmin.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/client/HdfsAdmin.java @@ -37,9 +37,11 @@ import org.apache.hadoop.hdfs.protocol.CachePoolEntry; import org.apache.hadoop.hdfs.protocol.CachePoolInfo; import org.apache.hadoop.hdfs.protocol.EncryptionZone; +import org.apache.hadoop.hdfs.protocol.ErasureCodingZone; import org.apache.hadoop.hdfs.protocol.HdfsConstants; import org.apache.hadoop.security.AccessControlException; import org.apache.hadoop.hdfs.tools.DFSAdmin; +import org.apache.hadoop.io.erasurecode.ECSchema; /** * The public API for performing administrative functions on HDFS. Those writing @@ -363,4 +365,42 @@ public void setStoragePolicy(final Path src, final String policyName) throws IOException { dfs.setStoragePolicy(src, policyName); } + + /** + * Create the ErasureCoding zone + * + * @param path + * Directory to create the ErasureCoding zone + * @param schema + * ECSchema for the zone. If not specified default will be used. + * @param cellSize + * Cellsize for the striped ErasureCoding + * @throws IOException + */ + public void createErasureCodingZone(final Path path, final ECSchema schema, + final int cellSize) throws IOException { + dfs.createErasureCodingZone(path, schema, cellSize); + } + + /** + * Get the ErasureCoding zone information for the specified path + * + * @param path + * @return Returns the zone information if path is in EC zone, null otherwise + * @throws IOException + */ + public ErasureCodingZone getErasureCodingZone(final Path path) + throws IOException { + return dfs.getErasureCodingZone(path); + } + + /** + * Get the ErasureCoding schemas supported. + * + * @return ECSchemas + * @throws IOException + */ + public ECSchema[] getECSchemas() throws IOException { + return dfs.getClient().getECSchemas(); + } }