MAPREDUCE服务 MRS-参考Hive JDBC代码用例开发的业务应用运行失败:原因分析

时间:2024-08-27 10:23:54

原因分析

  1. 初步分析怀疑是没有完成kerberos认证就去进行业务交互。
  2. 深入分析日志发现日志上虽然有打印“com.xxx.bigdata.security.LoginUtil - Login success!!!!!!!!!!!!!!”,但没打印“org.apache.hadoop.security.UserGroupInformation : Login successful...”。

    分析代码,发现:

    /*      */   @InterfaceAudience.Public
    /*      */   @InterfaceStability.Evolving
    /*      */   public static synchronized void loginUserFromKeytab(String user, String path)
    /*      */     throws IOException
    /*      */   {
    /*  958 */     if (!isSecurityEnabled()) {
    /*  959 */       return;
    /*      */     }
    ......
  3. 分析“isSecurityEnabled()”,发现是否要发起认证,还需要判断configuration中是否有配置“hadoop.security.authentication”为“kerberos”。

    本Hive业务应用确实没有正确设置此配置,所以被认为不需要做kerberos认证。

    分析Hive组件的“jdbc-examples”样例工程,不存在类似问题,是因为该工程的classpath路径下,存在core-site.xml配置文件,此配置文件上设置“hadoop.security.authentication”为“kerberos”。

support.huaweicloud.com/trouble-mrs/mrs_03_0194.html