刚开是学习hadoop,运行一个hadoop文件复制相关的小例子:
public class CopyFile {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
Configuration conf =new Configuration();
FileSystem hdfs =FileSystem.get(conf);
Path src=new Path("/home/b1107/hadoop/input");
Path dst=new Path("/");
hdfs.copyFromLocalFile(src, dst);
FileStatus files[]=hdfs.listStatus(dst);
System.out.println("Upload to "+conf.get("fs.default.name));
for(FileStatus file:files){
System.out.println(file.getPath());
}
}
}
我同过eclipse+hadoop运行,发现input文件本没有传到HDFS中,而是传到本地的文件系统的用户根目录,而且System.out.println("Upload to "+conf.get("fs.default.name));
的结果是:Upload to file:///
因为是刚接触hadoop,对于该问题是在是束手无策,就请教了hadoop学习群的高手,有人指出在Configuration conf =new Configuration();后加一句conf.set("fs.default.name","hdfs://localhost:9000");,过然这样就能传到hdfs中。
在不加conf.set("fs.default.name","hdfs://localhost:9000")时,我发现直接在hadoop上运行是能够传到HDFS的,是在搞不明白。八次问题记录在此,以便以后解决,也希望高手能指点问题的原因。