FAQ
Author: vgumashta
Date: Mon Oct 6 07:42:47 2014
New Revision: 1629583

URL: http://svn.apache.org/r1629583
Log:
HIVE-8324: Shim KerberosName (causes build failure on hadoop-1)

Modified:
     hive/trunk/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java
     hive/trunk/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java
     hive/trunk/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java
     hive/trunk/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java
     hive/trunk/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java
     hive/trunk/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java

Modified: hive/trunk/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java?rev=1629583&r1=1629582&r2=1629583&view=diff
==============================================================================
--- hive/trunk/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java (original)
+++ hive/trunk/service/src/java/org/apache/hive/service/auth/HiveAuthFactory.java Mon Oct 6 07:42:47 2014
@@ -29,10 +29,10 @@ import javax.security.sasl.Sasl;

  import org.apache.hadoop.hive.conf.HiveConf;
  import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
+import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim;
  import org.apache.hadoop.hive.shims.ShimLoader;
  import org.apache.hadoop.hive.thrift.HadoopThriftAuthBridge;
  import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.hadoop.security.authentication.util.KerberosName;
  import org.apache.hive.service.cli.HiveSQLException;
  import org.apache.hive.service.cli.thrift.ThriftCLIService;
  import org.apache.thrift.TProcessorFactory;
@@ -287,12 +287,11 @@ public class HiveAuthFactory {

    public static void verifyProxyAccess(String realUser, String proxyUser, String ipAddress,
      HiveConf hiveConf) throws HiveSQLException {
-
      try {
        UserGroupInformation sessionUgi;
        if (ShimLoader.getHadoopShims().isSecurityEnabled()) {
- KerberosName kerbName = new KerberosName(realUser);
- String shortPrincipalName = kerbName.getServiceName();
+ KerberosNameShim kerbName = ShimLoader.getHadoopShims().getKerberosNameShim(realUser);
+ String shortPrincipalName = kerbName.getServiceName();
          sessionUgi = ShimLoader.getHadoopShims().createProxyUser(shortPrincipalName);
        } else {
          sessionUgi = ShimLoader.getHadoopShims().createRemoteUser(realUser, null);
@@ -306,5 +305,5 @@ public class HiveAuthFactory {
          "Failed to validate proxy privilege of " + realUser + " for " + proxyUser, e);
      }
    }
-
+
  }

Modified: hive/trunk/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java
URL: http://svn.apache.org/viewvc/hive/trunk/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java?rev=1629583&r1=1629582&r2=1629583&view=diff
==============================================================================
--- hive/trunk/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java (original)
+++ hive/trunk/service/src/java/org/apache/hive/service/cli/thrift/ThriftHttpServlet.java Mon Oct 6 07:42:47 2014
@@ -31,8 +31,9 @@ import org.apache.commons.codec.binary.B
  import org.apache.commons.codec.binary.StringUtils;
  import org.apache.commons.logging.Log;
  import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim;
+import org.apache.hadoop.hive.shims.ShimLoader;
  import org.apache.hadoop.security.UserGroupInformation;
-import org.apache.hadoop.security.authentication.util.KerberosName;
  import org.apache.hive.service.auth.AuthenticationProviderFactory;
  import org.apache.hive.service.auth.AuthenticationProviderFactory.AuthMethods;
  import org.apache.hive.service.auth.HiveAuthFactory;
@@ -237,19 +238,31 @@ public class ThriftHttpServlet extends T
        }
      }

- private String getPrincipalWithoutRealm(String fullPrincipal) {
- KerberosName fullKerberosName = new KerberosName(fullPrincipal);
+ private String getPrincipalWithoutRealm(String fullPrincipal)
+ throws HttpAuthenticationException {
+ KerberosNameShim fullKerberosName;
+ try {
+ fullKerberosName = ShimLoader.getHadoopShims().getKerberosNameShim(fullPrincipal);
+ } catch (IOException e) {
+ throw new HttpAuthenticationException(e);
+ }
        String serviceName = fullKerberosName.getServiceName();
- String hostName = fullKerberosName.getHostName();
+ String hostName = fullKerberosName.getHostName();
        String principalWithoutRealm = serviceName;
        if (hostName != null) {
          principalWithoutRealm = serviceName + "/" + hostName;
        }
        return principalWithoutRealm;
      }
-
- private String getPrincipalWithoutRealmAndHost(String fullPrincipal) {
- KerberosName fullKerberosName = new KerberosName(fullPrincipal);
+
+ private String getPrincipalWithoutRealmAndHost(String fullPrincipal)
+ throws HttpAuthenticationException {
+ KerberosNameShim fullKerberosName;
+ try {
+ fullKerberosName = ShimLoader.getHadoopShims().getKerberosNameShim(fullPrincipal);
+ } catch (IOException e) {
+ throw new HttpAuthenticationException(e);
+ }
        return fullKerberosName.getServiceName();
      }
    }

Modified: hive/trunk/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java
URL: http://svn.apache.org/viewvc/hive/trunk/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java?rev=1629583&r1=1629582&r2=1629583&view=diff
==============================================================================
--- hive/trunk/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java (original)
+++ hive/trunk/shims/0.20/src/main/java/org/apache/hadoop/hive/shims/Hadoop20Shims.java Mon Oct 6 07:42:47 2014
@@ -59,6 +59,7 @@ import org.apache.hadoop.fs.permission.F
  import org.apache.hadoop.fs.permission.FsPermission;
  import org.apache.hadoop.hdfs.MiniDFSCluster;
  import org.apache.hadoop.hive.io.HiveIOExceptionHandlerUtil;
+import org.apache.hadoop.hive.shims.HadoopShims.KerberosNameShim;
  import org.apache.hadoop.io.LongWritable;
  import org.apache.hadoop.mapred.ClusterStatus;
  import org.apache.hadoop.mapred.FileInputFormat;
@@ -928,4 +929,10 @@ public class Hadoop20Shims implements Ha
    public Path getCurrentTrashPath(Configuration conf, FileSystem fs) {
      return null;
    }
+
+ @Override
+ public KerberosNameShim getKerberosNameShim(String name) throws IOException {
+ // Not supported
+ return null;
+ }
  }

Modified: hive/trunk/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java
URL: http://svn.apache.org/viewvc/hive/trunk/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java?rev=1629583&r1=1629582&r2=1629583&view=diff
==============================================================================
--- hive/trunk/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java (original)
+++ hive/trunk/shims/0.20S/src/main/java/org/apache/hadoop/hive/shims/Hadoop20SShims.java Mon Oct 6 07:42:47 2014
@@ -60,6 +60,7 @@ import org.apache.hadoop.mapreduce.Outpu
  import org.apache.hadoop.mapreduce.TaskAttemptContext;
  import org.apache.hadoop.mapreduce.TaskAttemptID;
  import org.apache.hadoop.mapreduce.TaskID;
+import org.apache.hadoop.security.KerberosName;
  import org.apache.hadoop.security.UserGroupInformation;
  import org.apache.hadoop.util.Progressable;
  import org.apache.hadoop.util.VersionInfo;
@@ -546,4 +547,44 @@ public class Hadoop20SShims extends Hado
    public Path getCurrentTrashPath(Configuration conf, FileSystem fs) {
      return null;
    }
+
+ /**
+ * Returns a shim to wrap KerberosName
+ */
+ @Override
+ public KerberosNameShim getKerberosNameShim(String name) throws IOException {
+ return new KerberosNameShim(name);
+ }
+
+ /**
+ * Shim for KerberosName
+ */
+ public class KerberosNameShim implements HadoopShimsSecure.KerberosNameShim {
+
+ private KerberosName kerberosName;
+
+ public KerberosNameShim(String name) {
+ kerberosName = new KerberosName(name);
+ }
+
+ public String getDefaultRealm() {
+ return kerberosName.getDefaultRealm();
+ }
+
+ public String getServiceName() {
+ return kerberosName.getServiceName();
+ }
+
+ public String getHostName() {
+ return kerberosName.getHostName();
+ }
+
+ public String getRealm() {
+ return kerberosName.getRealm();
+ }
+
+ public String getShortName() throws IOException {
+ return kerberosName.getShortName();
+ }
+ }
  }

Modified: hive/trunk/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java
URL: http://svn.apache.org/viewvc/hive/trunk/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java?rev=1629583&r1=1629582&r2=1629583&view=diff
==============================================================================
--- hive/trunk/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java (original)
+++ hive/trunk/shims/0.23/src/main/java/org/apache/hadoop/hive/shims/Hadoop23Shims.java Mon Oct 6 07:42:47 2014
@@ -72,6 +72,7 @@ import org.apache.hadoop.mapreduce.TaskT
  import org.apache.hadoop.mapreduce.task.JobContextImpl;
  import org.apache.hadoop.mapreduce.task.TaskAttemptContextImpl;
  import org.apache.hadoop.net.NetUtils;
+import org.apache.hadoop.security.authentication.util.KerberosName;
  import org.apache.hadoop.security.UserGroupInformation;
  import org.apache.hadoop.util.Progressable;
  import org.apache.tez.test.MiniTezCluster;
@@ -847,4 +848,44 @@ public class Hadoop23Shims extends Hadoo
      TrashPolicy tp = TrashPolicy.getInstance(conf, fs, fs.getHomeDirectory());
      return tp.getCurrentTrashDir();
    }
+
+ /**
+ * Returns a shim to wrap KerberosName
+ */
+ @Override
+ public KerberosNameShim getKerberosNameShim(String name) throws IOException {
+ return new KerberosNameShim(name);
+ }
+
+ /**
+ * Shim for KerberosName
+ */
+ public class KerberosNameShim implements HadoopShimsSecure.KerberosNameShim {
+
+ private KerberosName kerberosName;
+
+ public KerberosNameShim(String name) {
+ kerberosName = new KerberosName(name);
+ }
+
+ public String getDefaultRealm() {
+ return kerberosName.getDefaultRealm();
+ }
+
+ public String getServiceName() {
+ return kerberosName.getServiceName();
+ }
+
+ public String getHostName() {
+ return kerberosName.getHostName();
+ }
+
+ public String getRealm() {
+ return kerberosName.getRealm();
+ }
+
+ public String getShortName() throws IOException {
+ return kerberosName.getShortName();
+ }
+ }
  }

Modified: hive/trunk/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java
URL: http://svn.apache.org/viewvc/hive/trunk/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java?rev=1629583&r1=1629582&r2=1629583&view=diff
==============================================================================
--- hive/trunk/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java (original)
+++ hive/trunk/shims/common/src/main/java/org/apache/hadoop/hive/shims/HadoopShims.java Mon Oct 6 07:42:47 2014
@@ -731,4 +731,21 @@ public interface HadoopShims {
     * @return Path to HDFS trash, if current hadoop supports trash feature. Null otherwise.
     */
    Path getCurrentTrashPath(Configuration conf, FileSystem fs);
+
+ /**
+ * Returns a shim to wrap KerberosName
+ */
+ public KerberosNameShim getKerberosNameShim(String name) throws IOException;
+
+ /**
+ * Shim for KerberosName
+ */
+ public interface KerberosNameShim {
+ public String getDefaultRealm();
+ public String getServiceName();
+ public String getHostName();
+ public String getRealm();
+ public String getShortName() throws IOException;
+ }
+
  }

Search Discussions

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupcommits @
categorieshive, hadoop
postedOct 6, '14 at 7:43a
activeOct 6, '14 at 7:43a
posts1
users1
websitehive.apache.org

1 user in discussion

Vgumashta: 1 post

People

Translate

site design / logo © 2021 Grokbase