欢迎投稿

今日深度:

HBase实操 | 使用Java调用HBase的Endpoint Coprocessor,

HBase实操 | 使用Java调用HBase的Endpoint Coprocessor,hbasecoprocessor


1.文档编写目的



HBase是一款基于Hadoop的Key-Value数据库,提供了对HDFS上数据的高效随机读写服务,填补了Hadoop MapReduce批处理的缺陷,但HBase作为列簇数据库无法轻易的建立“二级索引”、难以执行求和、计数、排序等操作。在HBase0.96版本后引入了协处理器(Coprocessor),用户可以编写运行在HBase Server端的代码。HBase支持两种类型的协处理器,Endpoint和Observer。


Endpoint协处理器类似传统数据库中的存储过程,客户端可以调用这些Endpoint协处理器执行一段Server端代码,并将Server端代码的结果返回给客户端处理。


Observer Coprocessor,这中协处理器类似于传统数据库中的触发器,当发生某些事件的时候,Observer协处理器会被Server端调用。


本篇文章先不介绍如何去开发协处理器,主要借助于HBase示例中自带的RowCount Endpoint协处理器来说明如何使用Java代码在客户端调用。在后面的文章Fayson会介绍如何去编写一个协处理器。


Endpoint Coprocessor客户端调用过程,如下图所示:

59cea963df8bb79b1057cf1d9b2343accc939297

  • 内容概述

1.环境准备

2.编写Java示例代码及运行

3.统计方式对比


  • 测试环境

1.CM和CDH版本为5.14.3


2.环境准备



HBase中自带的Endpoint的协处理器,在hbase-examples.jar包中,在CDH的/opt/cloudera/parcels/CDH/lib/hbase/lib目录下,如下图所示:


1.确认hbase-examples-1.2.0-cdh5.14.2.jar是否在

11b739596f7661cf8c73e22b58e8b91b9a0a8878

541e1631eb09b0e5fd18fa753e5cb29ee69b0d0d

注意:在这里的配置为全局配置,协处理器有两种使用方式上图的方式是其中的一种,另外一种则是对单个表进行修改。


3.编写Java示例



1.创建HBase的Maven工程

3b664c54e7a3b505605c8770089584b37bf66f79

2.工程的pom.xml文件内容如下

bdf244b72c60b402c9ba5a0ff2ca2f3bc67d9fc7

30948098c71467ed373da2492370d066c808df68

f128faa77c8a57a1bdee2bb9966d319aab6f158e

3.编写CoprocessorExample.java类,内容如下


6c4268da113bff5927ad7fd7ed1ecb2053d8d347

cdf26351bac64a57350263d2ed5ed76db8a8f7d4

85501e77d7f930a36a15a8817eb8fe6e00b0087f

3002c11c8b779b60f4a4f429da27ca84ef2e1b40

329cbc6ffdf6dfe00dec223a37516548fe8a2b2b

4.示例代码运行

78870d5fa3a57565840c4dad0c0caba4e9c5172a

4.HBase表统计效率对比



1.使用HBase的count来统计测试表的总条数

66a0fec696bc1f54b95bfe162181796c825deba2

2.使用HBase提供的MapReduce方式统计测试表的总条数

8f7a29b30ff846a8ba4453ff2d6c1d6e0e912b68

73e1e09971f1995206a54f53828f807cc6540b55

执行耗时:14.12s

耗时统计:

39232e5b4d97f0960236f2ea60017aabd131eafa

5.总结



  • 在使用HBase的coprocessor方法是如果传入startkey和endkey是会根据rowkey的访问检索出符合条件的region并统计每个region上数据量。

  • HBase的Endpoint Coprocessor协处理器可以通过CM的方式配置全局的也可以通过客户端或hbase shell的方式来指定某一个表使用比较灵活,在后面的文章Fayson会介绍如何指定单个表的方式。


GitHub地址:

https://github.com/fayson/cdhproject/blob/master/hbasedemo/src/main/java/com/cloudera/hbase/coprocessor/CoprocessorExample.java


d3f2f0da5b6761a64c7049db7719525a2c492a0c

大家工作学习遇到HBase技术问题,把问题发布到HBase技术社区论坛http://hbase.group,欢迎大家论坛上面提问留言讨论。想了解更多HBase技术关注HBase技术社区

www.htsjk.Com true http://www.htsjk.com/hbase/11196.html NewsArticle HBase实操 | 使用Java调用HBase的Endpoint Coprocessor,hbasecoprocessor 1.文档编写目的 HBase是一款基于Hadoop的Key-Value数据库,提供了对HDFS上数据的高效随机读写服务,填补了Hadoop MapReduce批处理的缺...
评论暂时关闭