1
回答
Hadoop 本地调试

请问一下,我的系统是linux,hadoop安装在这个系统上,用eclipse写了一个mapreduce程序,但是不能调试,出现一下情况:

Exception in thread "main" java.io.IOException: No FileSystem for scheme: hdfs
at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2584)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2591)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:91)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2630)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2612)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:370)
at org.apache.hadoop.fs.Path.getFileSystem(Path.java:296)
at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.setInputPaths(FileInputFormat.java:498)
at xyz.tank.mr.WordCount.main(WordCount.java:27)

举报
bigtk
发帖于3年前 1回/446阅
共有1个答案 最后回答: 3年前

1.是否少了hadoop-hdfs的jar包;


2.如果已有hadoop-hdfs的jar包,可能是因为引入的hadoop-hdfs中的DistributedFileSystem被hadoop-commons重写了。

你需要在加载hadoop配置之后,在任何有关于FileSystem处理之前添加如下代码:

hadoopConfig.set("fs.hdfs.impl", 
        org.apache.hadoop.hdfs.DistributedFileSystem.class.getName()
    );
hadoopConfig.set("fs.file.impl",
        org.apache.hadoop.fs.LocalFileSystem.class.getName()
    );



--- 共有 1 条评论 ---
bigtk因为是在eclipse运行,所以所针对的目录都是linux本机上的目录,而不是hdfs目录,一开始设置错了,不过很感谢你,看了你的解答才知道如果不设置配置,默认都是读取jar包中带的那些配置文件! 3年前 回复
顶部