2011-10-17 68 views
0

我是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”));从eclipse访问HDFS文件

但它会引发超时错误:11/10/17 15:31:31信息ipc.Client:重试连接到服务器:localhost/127.0.0.1:9021。已经尝试0次(s)。

请指导我如何解决这个问题,我严重卡住了这个。任何帮助真的会被赞赏。

感谢

+0

您是否尝试过从命令行连接?即像这样:telnet 127.0.0.1:9021如果你仍然拒绝甜点,那么问题很可能在于本地防火墙。 –

回答

3

你需要确保包含core-site.xmlhdfs-site.xmlmapred-site.xml{$HADOOP_HOME}/conf文件夹是在Java CLASSPATH当你从Eclipse运行该程序。

要将此文件夹添加到CLASSPATH,请右键单击文件夹 - >属性 - > Java构建路径 - >添加外部类文件夹。

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>