java.lang.ClassNotFoundException:未找到类org.apache.hadoop.hdfs.DistributedFileSystem

时间:2014-04-10 05:31:08

标签: hadoop hdfs

我正在尝试使用Hadoop HDFS Java API列出HDFS中的所有文件。 我可以通过运行本地日食中的代码来列出远程HDFS上的文件。

但我得到了例外

java.lang.ClassNotFoundException: Class  org.apache.hadoop.hdfs.DistributedFileSystem 
org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2290)
org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2303)
org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:87)
org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2342)
org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2324)
org.apache.hadoop.fs.FileSystem.get(FileSystem.java:351)
org.apache.hadoop.fs.FileSystem.get(FileSystem.java:163)

当我从网络服务器执行代码时。

我添加了以下maven依赖项。

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-hdfs</artifactId>
    <version>2.0.0-cdh4.5.0</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-auth</artifactId>
    <version>2.0.0-cdh4.5.0</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-common</artifactId>
    <version>2.0.0-cdh4.5.0</version>
</dependency>
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-core</artifactId>
    <version>2.0.0-mr1-cdh4.5.0</version>
</dependency>

此外,我已将所需的jar嵌入到导出的jar中,并且maven在构建路径中添加了相同的内容。

如果有人遇到此问题,请先与您分享解决方案。

2 个答案:

答案 0 :(得分:0)

我面临着与Apache hadoop 2.2.0发布类似的问题,我通过将其作为一个单独的进程运行来做了一个解决方法,

final Process p = Runtime.getRuntime ().exec ("java -jar {jarfile} {classfile}";
final Scanner output = new Scanner (p.getErrorStream ());
while (output.hasNext ()) {
            try {
                System.err.println (output.nextLine ());
            } catch (final Exception e) {

            }
 }

jar文件包含使用apache hadoop 2.2.0 jars的实现。

尽管如此,我仍然在寻找一个确切的解决方案。

答案 1 :(得分:0)

对我来说,zeppelin服务器的lib目录中缺少hadoop-hdfs-2.6.0.jar。我复制了zeppelin lib forder,我的问题得到了解决。 :) 并在pom.xml中为hadoop-hdfs-2.6.0.jar添加依赖项。