0

我想进行 webhdfs 调用以使用 Java 从安全节点检索文件。

这是我正在做的 1. 使用 keytab 登录(工作正常)。我得到了 kerberos 票 2。现在,当我尝试调用以下代码时,它所做的是,它尝试通过进行 https 调用来获取委托令牌,但失败并显示 401 https://mynode:50070/webhdfs/v1 /?op=GETDELEGATIONTOKEN&user.name=myuser

下面是打开 hdfs 文件 FileSystem webFS = FileSystem.get(new URI("swebhdfs://" + domain + "myfile"), conf);
BufferedReader br=new BufferedReader(new InputStreamReader(webFS.open(new Path("swebhdfs://" + domain + "myfile"))));

我的问题是,因为我有 kerberos 票,我怎样才能将这张票传递给 UserGropupInformation 对象?

谢谢,

4

1 回答 1

0

我假设您可以访问keytab文件。在连接到 hadoop 集群之前添加以下代码段。
该方法将为指定用户loginUserFromKeytab加载和验证。keytab(简单来说“登录”)

String user = "USER@REALM"
String keyPath = "somekeytab.keytab"
UserGroupInformation.loginUserFromKeytab(user, keyPath)

UserGroupInformation位于hadoop-common罐子里。

参考 :

在 Java 代码中验证 Kerberos 主体

于 2015-07-21T08:11:58.257 回答