Hadoop客户端不断从本地文件系统读取

时间:2018-12-20 15:50:50

标签: java hadoop

我正在尝试通过Hadoop客户端从Windows上的Java程序读取文件。我有一个有效的kerberos keytab,但似乎无法从HDFS中读取。

我正在使用this页面上的示例,hadoop客户端不断从本地文件系统读取数据。我三重检查了我使用的URL及其正确的URL,我缺少了什么?

Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://test.hdp:8020");
conf.set("hadoop.security.authentication", "kerberos");

UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab("hdfs-user@MYCORP.NET", 
   "c:/temp/hdfs-user.keytab");

FileSystem fs = FileSystem.get(conf);
FileStatus[] fsStatus = fs.listStatus(new Path("/"));
for(int i = 0; i < fsStatus.length; i++){
  System.out.println(fsStatus[i].getPath().toString());
}

1 个答案:

答案 0 :(得分:0)

我发现了问题。 Hadoop客户端从本地FS读取的项目也试图将Hadoop与Apache&Active MQ集成。我正在使用的activemq-camel版本带来了一个较旧的Hadoop库,这是导致此问题的原因。我已更新到最新版本的Camel和Active MQ,问题就消失了。我验证了较新的版本不会带来任何hadoop缺陷。

IntegrityError