You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by br...@apache.org on 2014/11/17 23:36:48 UTC

svn commit: r1640247 [2/2] - in /hive/branches/HIVE-8065: common/src/java/org/apache/hadoop/hive/common/ common/src/java/org/apache/hadoop/hive/conf/ hcatalog/core/src/main/java/org/apache/hive/hcatalog/mapreduce/ itests/util/src/main/java/org/apache/h...

Modified: hive/branches/HIVE-8065/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java
URL: http://svn.apache.org/viewvc/hive/branches/HIVE-8065/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java?rev=1640247&r1=1640246&r2=1640247&view=diff
==============================================================================
--- hive/branches/HIVE-8065/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java (original)
+++ hive/branches/HIVE-8065/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java Mon Nov 17 22:36:47 2014
@@ -774,4 +774,83 @@ public interface HadoopShims {
     public String getShortName() throws IOException;
   }
 
+  /**
+   * Copies a source dir/file to a destination by orchestrating the copy between hdfs nodes.
+   * This distributed process is meant to copy huge files that could take some time if a single
+   * copy is done.
+   *
+   * @param src Path to the source file or directory to copy
+   * @param dst Path to the destination file or directory
+   * @param conf The hadoop configuration object
+   * @return True if it is successfull; False otherwise.
+   */
+  public boolean runDistCp(Path src, Path dst, Configuration conf) throws IOException;
+
+  /**
+   * This interface encapsulates methods used to get encryption information from
+   * HDFS paths.
+   */
+  public interface HdfsEncryptionShim {
+    /**
+     * Checks if a given HDFS path is encrypted.
+     *
+     * @param path Path to HDFS file system
+     * @return True if it is encrypted; False otherwise.
+     * @throws IOException If an error occurred attempting to get encryption information
+     */
+    public boolean isPathEncrypted(Path path) throws IOException;
+
+    /**
+     * Checks if two HDFS paths are on the same encrypted or unencrypted zone.
+     *
+     * @param path1 Path to HDFS file system
+     * @param path2 Path to HDFS file system
+     * @return True if both paths are in the same zone; False otherwise.
+     * @throws IOException If an error occurred attempting to get encryption information
+     */
+    public boolean arePathsOnSameEncryptionZone(Path path1, Path path2) throws IOException;
+
+    /**
+     * Compares two encrypted path strengths.
+     *
+     * @param path1 HDFS path to compare.
+     * @param path2 HDFS path to compare.
+     * @return 1 if path1 is stronger; 0 if paths are equals; -1 if path1 is weaker.
+     * @throws IOException If an error occurred attempting to get encryption/key metadata
+     */
+    public int comparePathKeyStrength(Path path1, Path path2) throws IOException;
+  }
+
+  /**
+   * This is a dummy class used when the hadoop version does not support hdfs encryption.
+   */
+  public static class NoopHdfsEncryptionShim implements HdfsEncryptionShim {
+    @Override
+    public boolean isPathEncrypted(Path path) throws IOException {
+    /* not supported */
+      return false;
+    }
+
+    @Override
+    public boolean arePathsOnSameEncryptionZone(Path path1, Path path2) throws IOException {
+    /* not supported */
+      return true;
+    }
+
+    @Override
+    public int comparePathKeyStrength(Path path1, Path path2) throws IOException {
+    /* not supported */
+      return 0;
+    }
+  }
+
+  /**
+   * Returns a new instance of the HdfsEncryption shim.
+   *
+   * @param fs A FileSystem object to HDFS
+   * @param conf A Configuration object
+   * @return A new instance of the HdfsEncryption shim.
+   * @throws IOException If an error occurred while creating the instance.
+   */
+  public HdfsEncryptionShim createHdfsEncryptionShim(FileSystem fs, Configuration conf) throws IOException;
 }