找不到认证文件,有人知道这是怎么回事吗
这个是提交的命令:
spark-submit \
> --master yarn \
> --deploy-mode client \
> --files /home/bdsoft/apps/envelope/kerberos_conf/krb5.conf,/home/bdsoft/apps/envelope/kerberos_conf/hadoop.keytab \
> spark-on-hbase-0.8.0.jar envelop_conf/83f8876b-3b94-4f96-addc-eaca5339f50a_20210310164014016.conf
这个是在程序中进行的HBase访问的kerberos认证代码:
public static Configuration kerberosLogin(Configuration hbConf){
LOG.info("开启kerberso 认证 ...... ");
//kerbose
hbConf.set("hadoop.security.authentication", "Kerberos");
hbConf.set("hbase.security.authentication", "kerberos");
hbConf.set("kerberos.principal" , KerberosCheckUtil.principal);
hbConf.set("hbase.master.kerberos.principal",KerberosCheckUtil.principal);
hbConf.set("hbase.regionserver.kerberos.principal",KerberosCheckUtil.principal);
System.setProperty("javax.security.auth.useSubjectCredOnly", "false");
System.setProperty("java.security.krb5.conf", "/home/bdsoft/apps/envelope/kerberos_conf/krb5.conf");
System.setProperty("java.security.krb5.debug", "true");
try{
UserGroupInformation.setConfiguration(hbConf);
if (UserGroupInformation.isLoginKeytabBased() && UserGroupInformation.getLoginUser().getUserName().equals(KerberosCheckUtil.principal)) {
LOG.info("hbase:" + hbConf.get("hbase.master")+ ",user [{}] is login already!",KerberosCheckUtil.principal);
}else {
UserGroupInformation.loginUserFromKeytab(KerberosCheckUtil.principal, "/home/bdsoft/apps/envelope/kerberos_conf/hadoop.keytab");
LOG.info("hbase:" + hbConf.get("hbase.master") + ",user [{}] login successed!",KerberosCheckUtil.principal);
}
LOG.info("Hbase Kerberos 认证成功 ...... ");
return hbConf;
}catch (Exception e){
e.printStackTrace();
LOG.error("Hbase kerberos 登录报错," + KerberosCheckUtil.getKeyTabFile());
System.exit(1);
return hbConf;
}
}
z