gpt4 book ai didi

java - 如何仅使用 java API 访问安全的 kerberized hadoop

转载 作者:可可西里 更新时间:2023-11-01 14:26:53 29 4
gpt4 key购买 nike

我对 Kerberos 很陌生。我正在使用共享的 Hadoop 集群。我的管理员向我提供了用户名和密码以及 KDC 服务器的位置。

是否可以仅使用 JAVA GSS API 和 Hadoop USerGroupInformation 类来访问 Hadoop 集群。

对于非 kerberos hadoop 集群,这将是我用来从 HDFS 读取文件的代码片段:

String uname = <Some username>;
UserGroupInformation ugi = UserGroupInformation.createRemoteUser(uname);
ugi.doAs(new PrivilegedExceptionAction<Void>(){

public Void run() throws Exception {

HdfsConfiguration hdfsConf = new HdfsConfiguration();
... SETUP Configuration ...
FileSystem fs = FileSystem.get(hdfsConf);
... Use 'fs' to read/write etc ...
}

});

现在对于安全集群,我还为用户提供了 kerberos 密码。有人可以向我提供我需要对上述代码片段进行哪些确切更改,以便首先访问 KDC 并执行 kinit,然后继续进行 HDFS 操作

请记住,在我计划部署 Java 应用程序的环境中,我可能没有在本地安装“kinit”,因此无法从 java 中调用 kinit 进程。

提前致谢..

最佳答案

如果您有一个用于UserGroupInformation super 用户身份的keytab 文件,您可以使用org.apache.hadoop.security.SecurityUtil#login( …) hadoop-common 库中提供的 API,可直接从您的代码登录。可以找到完整的 API here .

这需要在您创建远程用户之前完成(或者更一般地说,在可以对各种服务守护进程进行任何形式的任何套接字连接之前),否则调用将失败没有找到登录凭据。

您不需要在执行机器上安装或使用 krb5-workstation 包和实用程序即可运行。

关于java - 如何仅使用 java API 访问安全的 kerberized hadoop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21193453/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com