测试JavaHBase连接

测试JavaHBase连接,java,hadoop,hbase,apache-storm,Java,Hadoop,Hbase,Apache Storm,我正在尝试使用HBase Java API将数据写入HBase。我通过Ambari安装了Hadoop/HBase 以下是当前配置的设置方式: final Configuration CONFIGURATION = HBaseConfiguration.create(); final HBaseAdmin HBASE_ADMIN; HBASE_ADMIN = new HBaseAdmin(CONFIGURATION) 当我尝试写入HBase时,我会检查以确保该表存在 !HBASE_ADMIN.

我正在尝试使用HBase Java API将数据写入HBase。我通过Ambari安装了Hadoop/HBase

以下是当前配置的设置方式:

final Configuration CONFIGURATION = HBaseConfiguration.create();
final HBaseAdmin HBASE_ADMIN;

HBASE_ADMIN = new HBaseAdmin(CONFIGURATION)
当我尝试写入HBase时,我会检查以确保该表存在

!HBASE_ADMIN.tableExists(tableName)
如果没有,创建一个新的。但是,在尝试检查表是否存在时,似乎会抛出异常

我想知道我是否没有正确连接到HBase…是否有什么好方法可以验证配置是否正确以及我是否正在连接到HBase?我得到的例外情况如下

谢谢


java.lang.RuntimeException:java.lang.NullPointerException
位于org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:209)
位于org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:288)
位于org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:268)
位于org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:140)
位于org.apache.hadoop.hbase.client.ClientScanner.(ClientScanner.java:135)
位于org.apache.hadoop.hbase.catalog.MetaReader.fullScan(MetaReader.java:597)
位于org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:802)
位于org.apache.hadoop.hbase.catalog.MetaReader.tableExists(MetaReader.java:359)
位于org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:287)
位于org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:301)
位于com.business.project.hbase.HBaseMessageWriter.getTable(HBaseMessageWriter.java:40)
位于com.business.project.hbase.HBaseMessageWriter.write(HBaseMessageWriter.java:59)
位于com.business.project.hbase.HBaseMessageWriter.write(HBaseMessageWriter.java:54)
位于com.business.project.storm.bolt.package.exampleBolt.execute(exampleBolt.java:19)
在backtype.storm.daemon.executor$fn_5697$tuple_action_fn_5699.invoke(executor.clj:659)
在backtype.storm.daemon.executor$mk_task_receiver$fn_u5620.invoke(executor.clj:415)
在backtype.storm.disruptor$clojure_handler$reify__1741.onEvent(disruptor.clj:58)
位于backtype.storm.utils.DisruptorQueue.ConsumerBatchToCursor(DisruptorQueue.java:125)
位于backtype.storm.utils.DisruptorQueue.ConsumerBatchWhenAvailable(DisruptorQueue.java:99)
在backtype.storm.disruptor$consume\u batch\u可用时调用(disruptor.clj:80)
在backtype.storm.daemon.executor$fn_u5697$fn_u5710$fn_u5761.invoke(executor.clj:794)
在backtype.storm.util$async\u循环$fn\uu 452.invoke处(util.clj:465)
在clojure.lang.AFn.run(AFn.java:24)
运行(Thread.java:745)
原因:java.lang.NullPointerException
位于org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.getMetaReplicaNodes(ZooKeeperWatcher.java:269)
位于org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilavable(MetaRegionTracker.java:241)
位于org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:62)
位于org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateMeta(ConnectionManager.java:1203)
位于org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1164)
位于org.apache.hadoop.hbase.client.rpcretryingcallerwithreadreplications.getRegionLocations(rpcretryingcallerwithreadreplications.java:294)
位于org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:130)
位于org.apache.hadoop.hbase.client.scannercallablewithreplications.call(scannercallablewithreplications.java:55)
位于org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:201)

ip\u地址
:这是您的hbase群集的ip\u地址,如果在配置文件中不相同,请更改hbase zookeeper端口(
2181
)。

除了Yosr建议的配置参数外,还指定

conf.set("zookeeper.znode.parent", "VALUE")

将有助于解决问题。

您可以使用
hbasadmin.checkHBaseAvailable(conf)

下面的属性解决了我的问题

对于Hortonworks:
hconfig.set(“zookeeper.znode.parent”、“/hbase unsecure”)

对于cloudera:
hconfig.set(“zookeeper.znode.parent”,“/hbase”)

   Configuration conf = HBaseConfiguration.create();
   conf.set("hbase.master", "ip_address:60000");
   conf.set("hbase.zookeeper.quorum","ip_address");
   conf.set("hbase.zookeeper.property.clientPort", "2181");

    HBaseAdmin admin = new HBaseAdmin(conf);

    boolean bool = admin.tableExists("table_name");
    System.out.println( bool);
conf.set("zookeeper.znode.parent", "VALUE")