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

本文涉及的产品
云原生多模数据库 Lindorm,多引擎 多规格 0-4节点
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 MongoDB,通用型 2核4GB
简介:

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技术社区公众号(微信号:hbasegroup),非常欢迎大家积极投稿。


096973d69f34b1380151180fd0a8ff2cade5bced


HBase技术交流社区 - 阿里官方“HBase生态+Spark社区大群”点击加入:https://dwz.cn/Fvqv066s


相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
4月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
84 0
|
3月前
|
缓存 Java 数据安全/隐私保护
当前仍在编辑文章 - Java Excel处理 - 实操案例与方法手册
当前仍在编辑文章 - Java Excel处理 - 实操案例与方法手册
78 0
|
4月前
|
Java 分布式数据库 API
HBase java API
HBase java API
23 0
|
4月前
|
存储 NoSQL 分布式数据库
分布式NoSQL列存储数据库Hbase Java API(四)
分布式NoSQL列存储数据库Hbase Java API(四)
21 0
|
4月前
|
存储 NoSQL 分布式数据库
分布式NoSQL列存储数据库Hbase Java API(三)
分布式NoSQL列存储数据库Hbase Java API(三)
40 0
|
4月前
|
存储 分布式计算 Java
Hbase Java编程
Hbase Java编程
27 0
|
11月前
|
分布式计算 Java Hadoop
Hbase数据库完全分布式搭建以及java中操作Hbase
Hbase数据库完全分布式搭建以及java中操作Hbase
|
12月前
|
Java
Java老掉牙的面试问题:线程交替打印问题,分析实操一下 下
Java老掉牙的面试问题:线程交替打印问题,分析实操一下 下
|
12月前
|
消息中间件 JavaScript 小程序
Java老掉牙的面试问题:线程交替打印问题,分析实操一下 上
Java老掉牙的面试问题:线程交替打印问题,分析实操一下 上
|
存储 监控 负载均衡
JAVA面试——Hbase(二)
JAVA面试——Hbase
93 0
JAVA面试——Hbase(二)