【发布时间】:2015-03-04 13:01:30
【问题描述】:
我正在尝试使用 Java 代码访问我的 HDFS,但我无法使其正常工作……经过 2 天的努力,我认为是时候寻求帮助了。
这是我的代码:
Configuration conf = new Configuration();
conf.addResource(new Path("/HADOOP_HOME/conf/core-site.xml"));
conf.addResource(new Path("/HADOOP_HOME/conf/hdfs-site.xml"));
FileSystem hdfs = FileSystem.get(conf);
boolean success = hdfs.mkdirs(new Path("/user/cloudera/testdirectory"));
System.out.println(success);
我从here 和here 获得此代码。 不幸的是,hdfs 对象只是一个“LocalFileSystem”对象,所以一定有问题。看起来这正是Rejeev在他的网站上写的:
[...] 如果您不将配置分配给 conf 对象(使用 hadoop xml 文件),您的 HDFS 操作将在本地文件系统上执行,而不是在 HDFS 上。 [...]
使用绝对路径我得到相同的结果。
conf.addResource(new Path("/etc/hadoop/conf/core-site.xml"))
这是我目前正在使用的库:
hadoop-core-2.0.0-mr1-cdh4.4.0.jar
听说 hadoop-core 被拆分成多个库,所以我也尝试了以下库:
hadoop-common-2.0.0-alpha.jar
hadoop-mapreduce-client-core-2.0.2-alpha.jar
我正在使用 Cloudera-CDH4.4.0,所以已经安装了 hadoop。通过控制台一切正常。 例如:
hadoop fs -mkdir testdirectory
所以一切都应该按照默认设置正确。
我希望你们能帮助我……这东西快把我逼疯了!这么简单的任务就失败了,真是令人沮丧。
非常感谢您的任何帮助。
【问题讨论】:
标签: java hadoop configuration hdfs cloudera-cdh