当前位置: 首页 > news >正文

mac m1上使用Kerberos访问远程linux hadoop集群的正确姿势

问题描述

测试环境 Linux 上部署了3节点的Hadoop集群,并开启了 Kerberos 认证

本机 mac m1电脑,拷贝了测试 linux hadoop部署包,然后客户端命令访问HDFS失败

前置配置

mac已经配置好/etc/krb5.conf ,但在执行hadoop命令时报错:

hadoop fs -ls /tmp

异常如下:

Caused by: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:211)at org.apache.hadoop.security.SaslRpcClient.saslConnect(SaslRpcClient.java:406)at org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:614)at org.apache.hadoop.ipc.Client$Connection.access$2200(Client.java:410)at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:798)at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:794)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subject.java:422)at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1844)at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:793)... 36 more
Caused by: GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)at sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:162)at sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:122)at sun.security.jgss.krb5.Krb5MechFactory.getMechanismContext(Krb5MechFactory.java:189)at sun.security.jgss.GSSManagerImpl.getMechanismContext(GSSManagerImpl.java:224)at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:212)at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:192)... 45 more

通过 klist命令,可以查看mac票据:

(base) ➜  bigdata klist
Ticket cache: KCM:501
Default principal: my@HADOOP.COMValid starting       Expires              Service principal
21  8 2025 18:02:54  22  8 2025 04:02:54  krbtgt/HADOOP.COM@HADOOP.COMrenew until 28  8 2025 18:02:54

对比 linux上的 klist看下:

Ticket cache: FILE:/tmp/krb5cc_5385
Default principal: my@HADOOP.COMValid starting       Expires              Service principal
08/21/2025 18:17:01  08/22/2025 04:17:01  krbtgt/HADOOP.COM@HADOOP.COMrenew until 08/28/2025 18:17:00

注意:第一行的 cache 类型不一致

问题原因

Mac上的 Ticket cache: KCM:501 这一行, Hadoop 系统不认,

KCM (Kerberos Credential Manager) 是 macOS 系统中使用的一种现代、安全的凭证缓存机制。

问题在于,Hadoop 使用的 Java GSSAPI 库, 默认不认识 KCM 这种缓存类型。它默认会去一个叫做 FILE:/tmp/krb5cc_... 的文件里寻找票据。两者访问方式不一致,所以就造成了 Failed to find any Kerberos tgt

修复方法

使用如下变量强制统一两者的访问路径: export KRB5CCNAME=/tmp/krb5cc_$(id -u),然后重新生成kinit就行了:

# 清理旧票据
kdestroy -Aexport KRB5CCNAME=/tmp/krb5cc_$(id -u)# 重新获取票据
kinit -kt /Users/tom/bigdata/my.keytab my#查看票据
klist# 再次尝试访问 HDFS
hadoop fs -ls /

上面的脚本跑完,mac上的ticket cache和linux上就一致,问题也就解决了

Ticket cache: FILE:/tmp/krb5cc_501
Default principal: my@HADOOP.COMValid starting       Expires              Service principal
21  8 2025 18:23:10  22  8 2025 04:23:10  krbtgt/HADOOP.COM@HADOOP.COMrenew until 28  8 2025 18:23:09
http://www.dtcms.com/a/342970.html

相关文章:

  • Android 定位技术全解析:从基础实现到精准优化
  • redis在Spring中应用相关
  • LeetCode算法日记 - Day 17: 算法中的位运算技巧总结
  • 【黑客技术零基础入门】硬核科普什么是HTMLHTML基本结构以及HTML基本使用(非常详细)零基础入门到精通,收藏这一篇就够了!
  • 轻量级加密的下一站:后量子、AI 与自动化验证
  • 【iOS】SDWebImage第三方库源码学习笔记
  • JupyterLab 安装(python3.10)
  • 大模型之原理篇——Transformer基础、分词器
  • 深度剖析:PCB 厚铜板铜厚检测,铜厚不足的连锁反应及检测手段
  • 性能测试中性能分析与调优学习大纲整理
  • C++中纯虚函数与普通虚函数的深度解析
  • 面试紧张情绪管理:如何保持冷静自信应对挑战
  • CLAUDE.md文件介绍(Claude Code核心配置文件,开始对话或执行任务时自动加载的上下文文件)
  • 工业大模型的应用场景
  • Ubuntu22.04设置共享文件夹
  • 2025年渗透测试面试题总结-25(题目+回答)
  • 数据库运维管理平台全面解析
  • opencv学习:图像边缘检测
  • # 重磅发布 | onecode 3.0.1 Base 源码正式开源:AI赋能的企业级开发框架
  • 算法训练营day58 图论⑧ 拓扑排序精讲、dijkstra(朴素版)精讲
  • 从零开始的Agent学习(二)-增加文档输出功能
  • 医疗信创新征程:常德二院全栈国产化项目引领行业变革
  • 审美积累 | 界面设计拆分 | Redesign Health - Services 医疗页面设计
  • 8.21网络编程——词典(未完成,有问题)
  • kotlin协程笔记-朱凯
  • C# 基本数据类型
  • 生信分析自学攻略 | R语言数据筛选和修改
  • 前端:文件直接在浏览器里下载
  • VMware ESXi 服务器暴露高危漏洞,中国1700余台面临勒索软件威胁
  • UE 虚幻引擎, unreal engine(1)概略介绍,安装本引擎,创建账户,打开 UE,创建项目,项目导入内容,尝试运行的添加第一人称游戏,