尝试在HBase独立运行示例时尝试java.io.EOFException

时间:2011-11-23 14:31:40

标签: hadoop hbase

我正在尝试运行此示例:https://github.com/larsgeorge/hbase-book/blob/master/ch03/src/main/java/client/PutExample.java,来自本书:http://ofps.oreilly.com/titles/9781449396107/,在独立的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)

提前致谢。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

&#13;
&#13;
<property>
    <name>hbase.security.authentication</name>
    <value>kerberos</value> 
</property> 
<property>
     <name>hbase.rpc.engine</name>
     <value>org.apache.hadoop.hbase.ipc.SecureRpcEngine</value>
</property>
&#13;
&#13;
&#13;