通過maven創建hadoop程序出現call to failed on local exception: java.io.EOFException錯誤


項目通過idea  maven創建 依賴也是通過maven解決  
相同程序在其他電腦上運行沒有問題,只有在我的電腦上運行有問題。


代碼如下:import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.mapred.JobConf;

import java.io.IOException;
import java.net.URI;

/**
 * Created by duxq on 2014/6/11.
 */
public class hdfs {
    private Configuration configuration;
    private static final String HDFS = "hdfs://192.168.1.145:9000/";
    private  String hdfsPath;

    public hdfs(Configuration configuration){
        this(HDFS, configuration);
    }

    public hdfs(String HDFS, Configuration configuration){
        this.hdfsPath = HDFS;
        this.configuration = configuration;
    }

    public static JobConf config(){
        JobConf conf = new JobConf(hdfs.class);
        conf.setJobName("control.hdfs");
        conf.addResource("core-site.xml");
        conf.addResource("hdfs-site.xml");
        conf.addResource("mapred-site.xml");
        return  conf;
    }

    public void ls(String folder) throws IOException {
        Path path = new Path(folder);
        System.out.println(hdfsPath);
        FileSystem fs = FileSystem.get(URI.create(hdfsPath), configuration);
        FileStatus[] list = fs.listStatus(path);
        System.out.println("==========================================================");
        for (FileStatus f : list) {
            System.out.printf("name: %s, folder: %s, size: %d\n", f.getPath(), f.isDir(), f.getLen());
        }
        System.out.println("==========================================================");
        fs.close();
    }

    public void mkdir(String folder) throws IOException {
        Path path = new Path(folder);
        FileSystem fs = FileSystem.get(URI.create(hdfsPath),configuration);
        if(!fs.exists(path)){
            fs.mkdirs(path);
            System.out.println("Create Success!");
        }
        fs.close();
    }

    public void rm(String foleder) throws IOException {
        Path path = new Path(foleder);
        FileSystem fs = FileSystem.get(URI.create(hdfsPath), configuration);
        fs.deleteOnExit(path);
        System.out.println("Delete Success!");
        fs.close();
    }

    public void cat(String remoteFile) throws IOException {
        Path path = new Path(remoteFile);
        FileSystem fs = FileSystem.get(URI.create(hdfsPath),configuration);
        FSDataInputStream fsdis = null;
        System.out.println("cat: " + remoteFile);
        try{
            fsdis = fs.open(path);
            IOUtils.copyBytes(fsdis, System.out, 4096, false);
        }finally {
            IOUtils.closeStream(fsdis);
            fs.close();
        }
    }

    public void createFile(String file, String content) throws IOException {
        FileSystem fs = FileSystem.get(URI.create(hdfsPath), configuration);
        byte[] buff = content.getBytes();
        FSDataOutputStream os = null;
        os = fs.create(new Path(file));
        os.write(buff, 0, buff.length);
        System.out.println("Create File Success!");
        if(os != null)
            os.close();
        fs.close();
    }

    public void copyFile(String local, String remote) throws IOException {
        FileSystem fs = FileSystem.get(URI.create(hdfsPath), configuration);
        fs.copyFromLocalFile(new Path(local), new Path(remote));
        fs.close();
    }

    public static void main(String[] args) throws IOException {
        JobConf conf = config();
        hdfs control = new hdfs(conf);
        control.ls("/user/hdfs/userCF/" );
        //control.createFile("/user/hdfs/userCF/test/test1","12");
//        control.rm("/user/hdfs/userCF/test");
//        control.ls("/user/hdfs/userCF/" );
//        System.out.println(conf.get("dfs.name.dir"));
//        System.out.println(conf);

    }
}


報錯如下:
Exception in thread "main" java.io.IOException: Call to 192.168.1.145/192.168.1.145:9000 failed on local exception: java.io.EOFException
at org.apache.hadoop.ipc.Client.wrapException(Client.java:1150)
at org.apache.hadoop.ipc.Client.call(Client.java:1118)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:229)
at com.sun.proxy.$Proxy1.getProtocolVersion(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:85)
at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:62)
at com.sun.proxy.$Proxy1.getProtocolVersion(Unknown Source)
at org.apache.hadoop.ipc.RPC.checkVersion(RPC.java:422)
at org.apache.hadoop.hdfs.DFSClient.createNamenode(DFSClient.java:183)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:281)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:245)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:100)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1446)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:67)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1464)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:263)
at hdfs.ls(hdfs.java:38)
at hdfs.main(hdfs.java:101)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:392)
at org.apache.hadoop.ipc.Client$Connection.receiveResponse(Client.java:845)
at org.apache.hadoop.ipc.Client$Connection.run(Client.java:790)

3 个解决方案

#1


該回復於2014-07-03 09:46:33被版主刪除

#2


請問解決了嗎  遇到相同的錯誤

#3


遇到同樣的問題,樓主解決了嗎?

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com