我是Hadoop的新手。我在使用eclipse中的java代码访问HDFS系统中的文件时遇到了问题。虽然我的fs.default.name在core-site.xml中设置为hdfs:// localhost:portno但它给我的URI为file://而不是hdfs://我尝试了其他一些东西,比如设置我的输入路径如下 : FileInputFormat.setInputPaths(conf,new Path(“hdfs:// localhost:9021 / user / training / shakespeare / poems”));
但是它会抛出超时错误:11/10/17 15:31:31 INFO ipc.Client:重试连接到服务器:localhost / 127.0.0.1:9021。已经尝试了0次。
请指导我如何解决这个问题,我很不好意思。任何帮助都会非常感激。
由于
答案 0 :(得分:3)
在从Eclipse运行程序时,您需要确保包含{$HADOOP_HOME}/conf
,core-site.xml
和hdfs-site.xml
的{{1}}文件夹位于Java mapred-site.xml
中。
要将此文件夹添加到CLASSPATH
,请右键单击文件夹 - > properties-> Java Build Path-> Add External Class Folder。
答案 1 :(得分:1)
如果您不想指定* -site.xml文件,可以直接在代码中配置hadoop客户端:
Configuration conf = new Configuration();
conf.set("fs.defaultFS","hdfs://namenode:8020");
FileSystem fs = FileSystem.get(conf);
如果在项目中使用Maven,则可以通过以下方式将hadoop客户端添加到pom.xml中(假设您选择了cloudera发行版):
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/content/repositories/releases/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.6.0-cdh5.5.0</version>
</dependency>
</dependencies>