我想进行webhdfs调用,以便使用Java从安全节点中检索文件。
这是我正在做的事情 1.使用keytab登录(工作正常)。我得到了一张kerberos票 2.现在当我尝试调用下面的代码时,它会做什么,它试图通过进行https调用来获取委托语,然后它失败了401 https://mynode:50070/webhdfs/v1/?op=GETDELEGATIONTOKEN&user.name=myuser
以下是打开hdfs文件的代码
FileSystem webFS = FileSystem.get(新URI(" swebhdfs://" +域+" myfile"),conf);
BufferedReader br = new BufferedReader(new InputStreamReader(webFS.open(new Path(" swebhdfs://" + domain +" myfile"))));
我的问题是,因为我有kerberos票,我怎么能把那个传递给UserGropupInformation对象?
谢谢,
答案 0 :(得分:0)
我假设您有权访问keytab
个文件。
在连接到hadoop集群之前添加以下代码段
loginUserFromKeytab
方法将使用keytab
为指定用户加载和验证。 ('以简单的方式登录'
String user = "USER@REALM"
String keyPath = "somekeytab.keytab"
UserGroupInformation.loginUserFromKeytab(user, keyPath)
UserGroupInformation
位于hadoop-common
jar。
参考: