这是关于java EOF异常的一般问题,以及与jar互操作性相关的Hadoop的EOF异常.任何一个主题的评论和答案都是可以接受
背景
我注意到一些讨论隐藏异常的线程,这最终是由"readInt"方法引起的.这个例外似乎有一些与hadoop无关的通用含义,但最终是由Hadoop jar的互操作性引起的.
在我的例子中,当我尝试在java中的hadoop中创建一个新的FileSystem对象时,我得到了它.
题
我的问题是:发生了什么以及为什么读取整数会引发EOF异常?什么"文件"是这个EOF异常引用的,如果两个jar不能互操作,为什么会抛出这样的异常呢?
其次,我也想知道如何修复此错误,以便我可以使用hdfs协议与java api远程连接和读/写hadoops文件系统....
java.io.IOException: Call to /10.0.1.37:50070 failed on local exception: java.io.EOFException
at org.apache.hadoop.ipc.Client.wrapException(Client.java:1139)
at org.apache.hadoop.ipc.Client.call(Client.java:1107)
at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:226)
at $Proxy0.getProtocolVersion(Unknown Source)
at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:398)
at org.apache.hadoop.ipc.RPC.getProxy(RPC.java:384)
at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:111)
at org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:213)
at org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:180)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:89)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1514)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:67)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:1548)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1530)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:228)
at sb.HadoopRemote.main(HadoopRemote.java:35)
Caused by: java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:375)
at org.apache.hadoop.ipc.Client$Connection.receiveResponse(Client.java:819)
at org.apache.hadoop.ipc.Client$Connection.run(Client.java:720)
关于hadoop:我修正了错误!您需要确保core-site.xml服务于0.0.0.0而不是127.0.0.1(localhost).
如果您收到EOF异常,则表示该IP无法从外部访问该端口,因此hadoop客户端/服务器ipc之间没有可读取的数据.
| 归档时间: |
|
| 查看次数: |
14411 次 |
| 最近记录: |