Hbase 自动续约kerberos认证失败

本文描述了一个SpringBoot + HBase项目在使用Kerberos认证时遇到的问题,问题表现为每隔3-4天认证会失败。分析发现,问题可能在于Hadoop版本(2.5.1)与JDK 1.8的不兼容。解决方案是升级到Hadoop Common 2.7.0以解决不兼容问题,升级后线上运行一周未再出现认证失败的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题情况

日志中存在大量的:

org.apache.hadoop.security.UserGroupInformation Not attempting to re-login since the last re-login was attempted less than 600 seconds before



Caused by: org.ietf.jgss.GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)

 

2. 项目环境

我的项目是一个springboot+hbase的项目,jdk 1.8 + hbase 1.2

认证Kerberos使用的org.apache.hadoop.security.UserGroupInformation 这个类,这个类在hadoop-common这个jar包。

hbase-client 1.3.6 (hadoop-common 2.5.1)

3. 问题分析

刚开始使用的是hbase-client 1.3.6 (hadoop-common 2.5.1)这个jar包中包含hadoop-common 2.5.1我就没有在单独引用hadoop-common的jar,刚开始第一次认证是没问题的,但是一般过了3-4天就会认证失败

自动失效时1天,目前不清楚为什么时大于1天才出现这个问题????

4. 解决方法

然后去google一下,尝试了多个方法,最后时一个帖子

https://stackoverflo

### HBase Kerberos 安全认证配置 #### 使用的软件版本 当前环境使用的是Hadoop 3.3.4 和 HBase 2.2.6 版本[^1]。 #### 修改 `hbase-site.xml` 文件 为了使HBase能够支持Kerberos,在所有HBase节点中的`$HBASE_HOME/conf/hbase-site.xml`文件内添加必要的配置项来启用此功能[^2]。具体来说,这些设置通常涉及定义Zookeeper以及HBase服务主体名称和服务密钥表路径等参数。 #### Java应用程序连接到启用了Kerberos的安全集群 当通过Java程序访问已开启Kerberos保护模式下的HBase实例时,需先创建一个基于HBase默认配置对象的新实例,并指定Kerberos配置文件的位置;接着将身份验证方式设为“kerberos”,并调用相应方法完成用户的登录操作[^3]: ```java // 创建一个新的HBase Configuration 对象 Configuration conf = HBaseConfiguration.create(); // 设置Kerberos 配置文件位置 System.setProperty("java.security.krb5.conf", "path/to/your/krb5.conf"); // 启动 kerberos 身份验证机制 conf.set("hadoop.security.authentication", "kerberos"); UserGroupInformation.setConfiguration(conf); // 登录用户从keytab文件获取凭证 String principal = "your_principal@YOUR.REALM"; String keytabPath = "/path/to/keytab/file.keytab"; UserGroupInformation.loginUserFromKeytab(principal, keytabPath); ``` 上述代码片段展示了如何在一个典型的Java客户端应用中初始化与HBase服务器之间的安全会话过程。请注意替换实际环境中对应的principal和keytab路径值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值