2013-09-27 92 views
0

hello每一个我工作在hadoop和我配置2节点hadoop群集。我必须使用java代码在hadoop文件系统中创建目录,但每次运行此代码时,我都会遇到一些异常。调用hadoop文件系统时在java代码中的异常

我的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代码。

我的代码有什么问题?

回答

1

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

+0

非常感谢您的回答我的问题先生我先生在集群中的所有系统上运行相同的版本。 – Simmant

+0

您使用的是哪个版本的Hadoop?该代码是否位于远程机器上? – Tariq

+0

先生,我正在使用hadoop 1.2.0先生,这个代码是在同一台机器先生。 – Simmant