来自hbase / filesystem的hadoop namenode连接中EOFexception的含义是什么?
这是关于java EOFexception的一般性问题,以及与jar互操作性相关的Hadoop的EOFexception。 任何一个主题的评论和答案都是可以接受
背景
我注意到一些讨论隐藏exception的线程,这最终是由“readInt”方法引起的。 这个例外似乎有一些与hadoop无关的通用含义,但最终是由Hadoop jar的互操作性引起的。
在我的例子中,当我尝试在java中的hadoop中创建一个新的FileSystem对象时,我得到了它。
题
我的问题是:发生了什么以及为什么读取整数会引发EOFexception? 什么“文件”是这个EOFexception所指的,如果两个jar无法互操作,为什么会抛出这样的exception呢?
其次,我也想知道如何解决这个错误,这样我就可以使用hdfs协议和java api远程连接和读/写hadoops文件系统….
java.io.IOException:在本地exception上调用/10.0.1.37:50070失败:java.io.EOFException at org.apache.hadoop.ipc.Client.wrapException(Client.java:1139) 在org.apache.hadoop.ipc.Client.call(Client.java:1107) 在org.apache.hadoop.ipc.RPC $ Invoker.invoke(RPC.java:226) 在$ Proxy0.getProtocolVersion(未知来源) 在org.apache.hadoop.ipc.RPC.getProxy(RPC.java:398) 在org.apache.hadoop.ipc.RPC.getProxy(RPC.java:384) 在org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:111) 在org.apache.hadoop.hdfs.DFSClient。(DFSClient.java:213) 在org.apache.hadoop.hdfs.DFSClient。(DFSClient.java:180) 在org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:89) 在org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1514) 在org.apache.hadoop.fs.FileSystem.access $ 200(FileSystem.java:67) at org.apache.hadoop.fs.FileSystem $ Cache.getInternal(FileSystem.java:1548) 在org.apache.hadoop.fs.FileSystem $ Cache.get(FileSystem.java:1530) 在org.apache.hadoop.fs.FileSystem.get(FileSystem.java:228) 在sb.HadoopRemote.main(HadoopRemote.java:35) 引起:java.io.EOFException 在java.io.DataInputStream.readInt(DataInputStream.java:375) 在org.apache.hadoop.ipc.Client $ Connection.receiveResponse(Client.java:819) 在org.apache.hadoop.ipc.Client $ Connection.run(Client.java:720)
关于hadoop:我修正了错误! 您需要确保core-site.xml服务于0.0.0.0而不是127.0.0.1(localhost)。
如果你得到EOFexception,则意味着该ip上无法从外部访问该端口,因此hadoop客户端/服务器ipc之间没有数据可读。
套接字上的EOFException意味着没有更多数据,并且对等方已关闭连接。