使用idea开发Java操作HBase的方法,之前一直好用的,今天连接出错,代码也很简单。在服务器上排查过Zookeeper、Hbase的状态的,全部正常。后来把hbase-site.xml配置的Zookeeper地址部分,修改了个样式,就可以连接,之后把配置改回来也可以连接了。 问题原因还待查。
public static boolean isExist(String tableName) throws IOException { //对HBase表操作需要用HbaseAdmin Connection connection = ConnectionFactory.createConnection(conf); HBaseAdmin admin = (HBaseAdmin) connection.getAdmin(); return admin.tableExists(TableName.valueOf(tableName)); }
异常内容:
org.apache.hadoop.hbase.client.RetriesExhaustedException: Can't get the locations at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:319) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:156) at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:60) at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:212) at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:327) at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:302) at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:167) at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:162) at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:796) at org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602) at org.apache.hadoop.hbase.MetaTableAccessor.tableExists(MetaTableAccessor.java:366) at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:408) at com.zh.telecom.utils.HBaseUtil.isExistTable(HBaseUtil.java:87) at com.zh.telecom.hbase.HBaseDao.<init>(HBaseDao.java:50) at com.zh.telecom.kafka.HBaseConsumer.main(HBaseConsumer.java:24)
hbase-site.xml原来的配置:
<property> <name>hbase.zookeeper.quorum</name> <value>hd101:2181,hd102:2181,hd103:2181</value> </property>
hbase-site.xml 新改的配置
<property> <name>hbase.zookeeper.quorum</name> <value>hd101,hd102,hd103</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property>