测试javahbase连接

nwo49xxi  于 2021-05-30  发布在  Hadoop
关注(0)|答案(4)|浏览(255)

我正在尝试使用hbase javaapi将数据写入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
  at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:209)
  at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:288)
  at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:268)
  at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:140)
  at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:135)
  at org.apache.hadoop.hbase.catalog.MetaReader.fullScan(MetaReader.java:597)
  at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:802)
  at org.apache.hadoop.hbase.catalog.MetaReader.tableExists(MetaReader.java:359)
  at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:287)
  at org.apache.hadoop.hbase.client.HBaseAdmin.tableExists(HBaseAdmin.java:301)
  at com.business.project.hbase.HBaseMessageWriter.getTable(HBaseMessageWriter.java:40)
  at com.business.project.hbase.HBaseMessageWriter.write(HBaseMessageWriter.java:59)
  at com.business.project.hbase.HBaseMessageWriter.write(HBaseMessageWriter.java:54)
  at com.business.project.storm.bolt.package.exampleBolt.execute(exampleBolt.java:19)
  at backtype.storm.daemon.executor$fn__5697$tuple_action_fn__5699.invoke(executor.clj:659)
  at backtype.storm.daemon.executor$mk_task_receiver$fn__5620.invoke(executor.clj:415)
  at backtype.storm.disruptor$clojure_handler$reify__1741.onEvent(disruptor.clj:58)
  at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:125)
  at backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:99)
  at backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:80)
  at backtype.storm.daemon.executor$fn__5697$fn__5710$fn__5761.invoke(executor.clj:794)
  at backtype.storm.util$async_loop$fn__452.invoke(util.clj:465)
  at clojure.lang.AFn.run(AFn.java:24)
  at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
  at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.getMetaReplicaNodes(ZooKeeperWatcher.java:269)
  at org.apache.hadoop.hbase.zookeeper.MetaRegionTracker.blockUntilAvailable(MetaRegionTracker.java:241)
  at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getMetaRegionLocation(ZooKeeperRegistry.java:62)
  at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateMeta(ConnectionManager.java:1203)
  at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.locateRegion(ConnectionManager.java:1164)
  at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.getRegionLocations(RpcRetryingCallerWithReadReplicas.java:294)
  at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:130)
  at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:55)
  at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:201)
9rygscc1

9rygscc11#

你可以用 HBaseAdmin.checkHBaseAvailable(conf);

kse8i1jr

kse8i1jr2#

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);
``` `ip_address` :这是您的hbase群集的ip地址,请更改您的hbase zookeeper端口( `2181` )如果在配置文件中不相同。
j8ag8udp

j8ag8udp3#

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

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

有助于解决问题。

lskq00tm

lskq00tm4#

下面的属性解决了我的问题
对于hortonworks: hconfig.set("zookeeper.znode.parent", "/hbase-unsecure") 对于cloudera: hconfig.set("zookeeper.znode.parent", "/hbase")

相关问题