kerberos 认证,登录hdfs失败,报"Cannot locate default realm"问题排查和定位:
arthas 排查报错的代码
1.获取静态属性
getstatic sun.security.krb5.Config singleton
2.查看某个类的某个方法的返回值
watch org.apache.hadoop.security.authentication.util.KerberosUtil getDefaultRealm returnObj
报错的日志
` org.apache.hadoop.security.HadoopKerberosName.setConfiguration(HadoopKerberosName.java:65) at org.apache.hadoop.security.UserGroupInformation.initialize(UserGroupInformation.java:275) at org.apache.hadoop.security.UserGroupInformation.setConfiguration(UserGroupInformation.java:311) at com.cgh.system.utils.connection.hdfs.HdfsConnection.kerberosAuthentication(HdfsConnection.java:140) at com.cgh.system.utils.connection.hdfs.HdfsConnection.login(HdfsConnection.java:106) at com.cgh.hsm.TestControlelr.healthHdfs(TestControlelr.java:185)
KrbException: Cannot locate default realm at sun.security.krb5.Config.getDefaultRealm(Config.java:1181) sun.security.krb5.Config.getRealmFromDNS(Config.java:1277) at sun.security.krb5.Config.getDefaultRealm(Config.java:1162)
at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.security.authentication.util.KerberosUtil.getDefaultRealm(KerberosUtil.java:84) at org.apache.hadoop.security.HadoopKerberosName.setConfiguration(HadoopKerberosName.java:63) `