Hadoop HDFS Wrong FS: hdfs:/ expected file:///(2)

Configuration类:  defaultResources.add("hadoop-default.xml");
                                finalResources.add("hadoop-site.xml");

下面把整个代码到执行过程叙述一下,希望对刚接触hadoop编程的人有帮助:

1.需要配置好java环境主要是JAVA_HOME和CLASS_PATH,两个必须要设置

export JAVA_HOME=/usr/lib/jvm/java-6-sun
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib

2在本地编写代码,当然可以用Eclipse工具

3设置HADOOP_CLASSPATH

HADOOP_CLASSPATH指向class文件的根目录,例如包hadoop.test的根目录上/home/hadoop/EclipseWorkspace/TestProject/bin

4执行命令hadoop hadoop.test.URLCat /home/hadoop/Documents/test.txt hdfs://192.186.54.1:8020/user/hadoop/test.txt

又出错了:java.lang.IllegalArgumentException: Wrong FS: hdfs://192.186.54.1:8020/user/hadoop/test.txt, expected: hdfs://hadoop1
    at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java:310)
    at org.apache.hadoop.hdfs.DistributedFileSystem.checkPath(DistributedFileSystem.java:99)
    at org.apache.hadoop.hdfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:155)
    at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:195)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:484)
    at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:384)
    at hadoop.test.URLCat.copyFileToAnotherFile(URLCat.java:46)
    at hadoop.test.URLCat.main(URLCat.java:86)
 原因,命令hdfs不能说IP,需要hostname,执行以下命令

hadoop hadoop.test.URLCat /home/hadoop/Documents/test.txt hdfs://hadoop1:8020/user/hadoop/test.txt

一切OK。

我的配置文件是ip,而不是hostname,因为没有DNS server帮助解析,但是执行命令仍然得用hostname。

综上:2个地方需要注意。Configuration和hdfs://hostname:port/user/pathtofile/file

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/0946b6a092f04366a8fe2ed54ad40902.html