<< Click to Display Table of Contents >> Kerberos常见问题复制链接 |
1.Kerberos错误排查基本方法
1.1 检查驱动
一般情况下kerberos的驱动都是由很多jar组成。
1.2 检查数据源配置项
主要检查各项配置文件是否正确。
1.3 检查主机时间
这一步非常重要,一定要确保永洪主机和KDC主机时间(包含时区)一致。
1.4 核对keytab文件和用户名
这是本次遇到的新问题,建议大家以后都让客户提供最新的keytab文件。
1.5 核对jaas文件
一定要注意的是keyTab和principal,在本次排查中也发现需要配置useKeyTab=true。
Client {
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/app/user.keytab" --同密钥文件路径
storeKey=true
useTicketCache=false
principal="yonghong@HADOOP.COM"; --同用户名
debug=true
};
(加粗字体为本地环境值)
2.常见报错
以下为几种永洪BI关于Kerbero连接出现的常见报错的可能原因和解决方案。
•出现报错,提示中包含“org.apache.hadoop.conf.Configuration”,“NoClassDefFoundError:org/apache/thrift/protocol”。
报错原因:hive驱动Jar不全;
可用解决方案:上传完整的hive驱动。
•出现报错,提示中包含“Cannot obtain password for user”。
报错原因:用户的jaas.conf中配置的是不使用keytab登录,jaas.conf中的useKeyTab属性设置为false或useKeyTab属性设置为true,keyTab属性未设置;
可用解决方案:更新jaas文件。
•出现报错,提示中包含“Unable to read HiveServer2 configs from ZooKeeper”。
报错原因:jaas文件里面配置的principal和数据源的用户名不一致。
可用解决方案:更新jaas文件。
•出现报错,提示中包含“Unsupported mechanism type PLAIN”。
报错原因:永洪BI使用非Kerberos登录访问设置了Kerberos的数据库;
可用解决方案:改为Kerberos访问。
•出现报错,提示中包含“over max connections”。
报错原因:业务量大导致连接HiveServer单个节点的连接数超过了最大连接数,需要调大连接HiveServer实例的最大连接数;
可用解决方案:登录MRS Manager页面,访问“服务管理 > Hive > 服务配置 > 参数类别(选择全部配置)”,搜索 hive.server.session.control.maxconnections配置项,修改hive.server.session.control.maxconnections配置的值到合适值,不能超过1000。保存配置并重启受影响的服务或者实例。
•连接HBase时出现“Ensure that config phoenix.schema.isNamespaceMappingEnabled is consistent on client and server”。
报错原因:在连接时设置了 phoenix.schema.isNamespaceMappingEnabled 为 true;
可用解决方案:
方案1: 推荐使用该方案,修改FusionInsight的配置,配置可以参考以下文档:
https://blog.csdn.net/zhangshenghang/article/details/97892067。
方案2:修改永洪BI配置:
先关闭永洪服务器,修改/opt/YH/vividime/bihome/bi.properties,增加如下配置:
phoenix.schema.isNamespaceMappingEnabled=false
关于namespace mapping的详细介绍参见如下文档:http://phoenix.apache.org/namspace_mapping.html。
3.永洪BI连接多KDC方案
将多个 KDC 的信息合并到一个 krb5.conf 中,将该文件路径配置到永洪BI【数据源】模块的【krb5文件路径】项
• 在 [realms] 条目下增加多个 Realm 对应的 KDC 信息。
➢示例:
[realms]
HADOOP.COM = {
kdc = 192.168.1.228
admin_server = 192.168.1.228
}
HADOOP2.COM = {
kdc = 192.168.1.223
admin_server = 192.168.1.223
}
•在 [domain_realm] 配置项下增加多个 domian realm 。
➢示例:
[domain_realm]
.hadoop.com = HADOOP.COM
hadoop.com = HADOOP.COM
.hadoop2.com = HADOOP2.COM
hadoop2.com = HADOOP2.COM
• [libdefaults] 配置项下的default_realm 可以配置任意一个 KDC 的 realm 。
•在配置永洪数据源时,所有的 principal 都要指定 realm 。
➢示例:
hive/yonghong.com/HADOOP.COM
➢错误实例:
hive/yonghong.com
hive