某日 ,某人 使用java操作 hbase 的时候 出现了问题, 报错如下:
18/03/12 20:03:54 DEBUG AbstractRpcClient: Connecting to master.r417.cs.scnu.edu.cn/192.168.69.204:60020
18/03/12 20:03:54 DEBUG ConnectionManager$HConnectionImplementation: locateRegionInMeta parentTable=hbase:meta, metaLocation=, attempt=10 of 35 failed; retrying after sleep of 10082 because:
java.lang.NoSuchFieldError: RPC_HEADER
18/03/12 20:03:54 DEBUG ClientCnxn: Reading reply sessionid:0x461e0abe6dc719c, packet:: clientPath:null serverPath:null finished:false header:: 57,8 replyHeader:: 57,270583345950,0 request:: '/hbase-unsecure,F response:: v{'meta-region-server,'backup-masters,'table,'draining,'region-in-transition,'table-lock,'running,'master,'namespace,'hbaseid,'online-snapshot,'replication,'splitWAL,'recovering-regions,'rs,'flush-table-proc}
经过多方排查: 是引入的版本问题
解决方式
http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.hbase%22%20AND%20v%3A%221.4.0%22
把对应的版本改成你所对应的hbase 版本, 改变 依赖即可
我操作的时候只用到了以下两种依赖
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-client-project</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase-it</artifactId>
<version>1.3.1</version>
</dependency>
自己在找依赖的过程中遇到了太多的坑, 希望能够帮助大家!!