Hadoop 尝试在HBase单机版上运行示例时出现java.io.EOFException

Hadoop 尝试在HBase单机版上运行示例时出现java.io.EOFException,hadoop,hbase,Hadoop,Hbase,我试图在独立的HBase安装上运行本书中的示例。启动HBase工作正常,并且可以访问shell,但是当我尝试运行该示例时,出现以下错误: Exception in thread "main" java.io.IOException: Call to /127.0.0.1:55958 failed on local exception: java.io.EOFException at org.apache.hadoop.hbase.ipc.HBaseClient.wrapExcep

我试图在独立的HBase安装上运行本书中的示例。启动HBase工作正常,并且可以访问shell,但是当我尝试运行该示例时,出现以下错误:

Exception in thread "main" java.io.IOException: Call to /127.0.0.1:55958 failed on local exception: java.io.EOFException
        at org.apache.hadoop.hbase.ipc.HBaseClient.wrapException(HBaseClient.java:872)
        at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:841)
        at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:141)
        at $Proxy4.getProtocolVersion(Unknown Source)
        at org.apache.hadoop.hbase.ipc.WritableRpcEngine.getProxy(WritableRpcEngine.java:174)
        at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:295)
        at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:272)
        at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:324)
        at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:228)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1228)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1190)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1177)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:914)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:810)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.relocateRegion(HConnectionManager.java:784)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1014)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:814)
        at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:778)
        at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:188)
        at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:159)
        at client.CRUDExample.main(CRUDExample.java:26)
    Caused by: java.io.EOFException
        at java.io.DataInputStream.readInt(DataInputStream.java:375)
        at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.receiveResponse(HBaseClient.java:548)
        at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.run(HBaseClient.java:486)
线程“main”java.io.IOException中的异常:对/127.0.0.1:55958的调用在本地异常上失败:java.io.eofeexception 位于org.apache.hadoop.hbase.ipc.HBaseClient.wrapException(HBaseClient.java:872) 位于org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:841) 位于org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:141) 位于$Proxy4.getProtocolVersion(未知源) 在org.apache.hadoop.hbase.ipc.writeablerpcengine.getProxy上(writeablerpcengine.java:174) 位于org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:295) 位于org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:272) 位于org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:324) 位于org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:228) 位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1228) 位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1190) 位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1177) 位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionMeta(HConnectionManager.java:914) 位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:810) 位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.relocateRegion(HConnectionManager.java:784) 位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionMeta(HConnectionManager.java:1014) 位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:814) 位于org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:778) 位于org.apache.hadoop.hbase.client.HTable.(HTable.java:188) 位于org.apache.hadoop.hbase.client.HTable.(HTable.java:159) 位于client.CRUDExample.main(CRUDExample.java:26) 原因:java.io.EOFException 位于java.io.DataInputStream.readInt(DataInputStream.java:375) 位于org.apache.hadoop.hbase.ipc.HBaseClient$Connection.receiveResponse(HBaseClient.java:548) 位于org.apache.hadoop.hbase.ipc.HBaseClient$Connection.run(HBaseClient.java:486)
提前感谢。

问题是我用更新版本的HBase编译了这些示例。要修复此错误,对于这些示例,请编辑pom.xml并确保HBase依赖项的版本与您再次运行和生成的版本相同。(也不要忘记删除chXX/target/cached_classpath.txt,否则它仍然会将另一个库添加到您的类路径)

我遇到这个问题时使用了完全相同的错误日志,但原因不同。 在我将以下项目添加到hbase客户端配置后,该问题已得到修复:


hbase.security.authentication
kerberos
hbase.rpc.engine
org.apache.hadoop.hbase.ipc.SecureRpcEngine

你能解释一下吗。我有一个pom,它有一致的版本,删除了目标输出,重建了,但仍然无法工作。