java - java代码调用hadoop文件系统时出现异常

标签 java hadoop

大家好,我正在从事 hadoop 工作,并且配置了 2 节点 hadoop 集群。我必须使用 java 代码在 hadoop 文件系统中创建目录,但每次运行此代码时都会出现一些异常。

我的java代码

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class Hadoopjava {

    public static void main(String ar[]) throws IOException

    {

        Configuration conf = new Configuration();

        /*conf.addResource(new Path("core-site.xml"));
        conf.addResource(new Path("hdfs-site.xml"));*/
            conf.set("fs.default.name", "hdfs://master:54310");


        String dirName = "dd";

        //values of hosthdfs:port can be found in the core-site.xml  in the fs.default.name

        FileSystem fileSystem = FileSystem.get(conf);

        Path path = new Path("/user/hduser/dd/gg");
        fileSystem.mkdirs(path) ; 

       // System.out.println(data);
        /*Path path = new Path("/user/hduser/dd");
        if (fileSystem.exists(path)) {
            System.out.println("Dir " + dirName + " already exists");
            return;
        }

        // Create directories
        fileSystem.mkdirs(path);*/

        fileSystem.close();
    }
}

我的代码中出现异常

Exception in thread "main" java.io.IOException: Call to master/192.168.0.128:54310 failed on local exception: java.io.EOFException
    at org.apache.hadoop.ipc.Client.wrapException(Client.java:775)
    at org.apache.hadoop.ipc.Client.call(Client.java:743)
    at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220)
    at sun.proxy.$Proxy0.getProtocolVersion(Unknown Source)
    at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:359)
    at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:106)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:207)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:170)
    at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:82)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1378)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1390)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:196)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:95)
    at com.widevision.hadoop.Hadoopjava.main(Hadoopjava.java:26)
Caused by: java.io.EOFException
    at java.io.DataInputStream.readInt(DataInputStream.java:392)
    at org.apache.hadoop.ipc.Client$Connection.receiveResponse(Client.java:501)
    at org.apache.hadoop.ipc.Client$Connection.run(Client.java:446)

我正在使用 Eclipse IDE 来编写 Java 代码。

我的代码有什么问题???

最佳答案

请确保您针对集群上运行的同一 Hadoop 版本编译代码。看起来不同协议(protocol)版本之间的协议(protocol)不匹配。

关于java - java代码调用hadoop文件系统时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19049620/

相关文章:

hadoop:如何显示put命令的执行时间?或者如何显示在 hdfs 中加载文件的持续时间?

python - HadoopStreaming R作为 reducer 失败

java - 如何通过将私有(private)变量作为类成员函数中的参数传递来覆盖私有(private)变量?

java - 通过 jmeter-maven 插件运行测试时如何从命令行获取用户定义的 Jmeter 变量

java - 为什么服务层和 dao 层总是有单一的实现接口(interface)?

hadoop - spark-submit 如何设置user.name

java - 为什么一根长字符串比许多小字符串占用更多空间?

java - Spring MVC 类似 AMQP 消息的处理

Hadoop 2.7.1 wordcount 作业

hadoop - 如何创建以半列分隔并以逗号作为小数点的分区表?