2015-07-21 131 views
0

我想通过webhdfs调用来从安全节点使用Java检索文件。如何使用webhdfs从安全节点读取hdfs文件?

这是我在做什么 1.使用keytab登录(正常工作)。我得到一个Kerberos票据 2.现在,当我尝试调用下面的代码,它的作用是,它试图获得通过进行HTTPS调用delegationtoken和失败与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对象?

感谢,

回答

0

我假设你有机会获得keytab文件。 在连接到hadoop群集之前添加以下代码片段。
loginUserFromKeytab方法将为指定用户加载和验证keytab。 (在简单的术语 '在日志')

String user = "[email protected]" 
String keyPath = "somekeytab.keytab" 
UserGroupInformation.loginUserFromKeytab(user, keyPath) 

UserGroupInformation位于hadoop-common罐子。

参考:

Authenticating Kerberos Principals in Java Code