栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从Windows使用Java和Kerberos Keytab访问Cloudera上的HDFS

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从Windows使用Java和Kerberos Keytab访问Cloudera上的HDFS

在Windows上运行Hadoop客户端以访问kerberized集群时, 需要 特定的 “本机库” (即DLL)。
据我所知,没有充分的理由,因为该lib实际上并未在某些自动回归测试(!?!)之外使用,因此Hadoop提交者给Hadoop用户造成了痛苦。

更麻烦的是,还没有该DLL(以及Windows的“存根”(Stub))的正式版本,该DLL可以从Java使用它。您必须 (a) 从源代码自己构建它-
祝您好运-或 (b) 在互联网上搜索可下载的Hadoop-for-Windows运行时,并祈祷其中不包含任何恶意软件。
最佳选择(对于64位Windows)在这里:https :
//github.com/steveloughran/winutils
…并且自述文件解释了为什么您可以合理地信任该运行时。但是,如果您使用的是较旧的32位Windows,那么您就只能靠自己了。

现在,假设您将运行时部署在Windows框下

C:Some Dirhadoopbin

(最后一个
bin
是必需的;嵌入式空间只是额外的乐趣)

您必须使用两个Java属性将Hadoop客户端指向该运行时:(

"-Dhadoop.home.dir=C:/Some Dir/hadoop" "-Djava.library.path=C:/SomeDir/hadoop/bin"

请注意,围绕Windows args整体使用双引号,以保护路径中的嵌入式空间,这些空间已转换为Java样式,从而带来了更多乐趣)
(在Eclipse中,只需将这些道具填充在“ VM Arguments”下(包括引号)

现在,有Kerberos配置。如果您的KDC是公司的Active
Directory服务器,那么Java应该自动找到配置参数。但是,如果您的KDC是在Linux上独立安装的“ MIT
Kerberos”,那么您必须

/etc/krb5.conf
在群集上找到有效文件,将其复制到Windows框中,然后让Java使用它的附加属性…
"-Djava.security.krb5.conf=C:/Some Other Dir/krb5.conf"

然后,假设您已在Linux机器上使用来创建密钥表文件

ktutil
(或使用Active
Directory管理员通过一些AD命令为您创建了密钥表文件),并且
C:Some Other Dirfoo.keytab

如果密钥表是用于实际Windows帐户的,则将该文件放在其他任何东西下- -即您自己的帐户-或Prod服务帐户,然后 确保密钥表是安全的!
使用Windows安全性对话框仅限制对您的帐户的访问 (对于备份, 可以限制为 系统)
。因为该文件可以使任何人,在任何计算机上,都可以在群集(以及任何启用Kerberos的系统,包括Windows)上进行身份验证。

现在,您可以尝试使用进行身份验证

UserGroupInformation.loginUserFromKeytab("foo@BAR.ORG", "C:/Some OtherDir/foo.keytab");

如果不起作用,请同时使用环境变量

set HADOOP_JAAS_DEBUG=true

…和Java属性启用Kerberos调试跟踪
-Dsun.security.krb5.debug=true

(在Eclipse中,分别在“ Environment”和“ VM Arguments”中进行设置)



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/407169.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号