HBase实操 | 开发部署HBase Endpoint类型的Coprocessor

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

1.文档编写目的



在前面的文章介绍了HBase自带的Coprocessor调用示例《如何使用Java调用HBase的 Endpoint Coprocessor》,本篇文章主要介绍如何开发一个HBase Endpoint类型的协处理器。


本篇文章示例协处理器主要实现了对列的Count、Max、Min、Sum以及Average。前面的文章调用Coprocessor定义的全局的,在本篇文章介绍另一种实现方式通过代码的方式对指定的表添加Coprocessor。


  • 内容概述

1.环境准备

2.使用Protobuf生成序列化类

3.Endpoint Coprocessor服务端实现

4.Endpoint Coprocessor客户端实现

5.部署及调用


  • 测试环境

1.CM和CDH版本为5.14.3

2.集群未启用Kerberos


2.环境准备



在HMaster、RegionServer内部,创建了RpcServer实例,并与Client三者之间实现了Rpc调用,在HBase0.95版本引入了Google-Protobuf作为中间数据组织方式,并在Protobuf提供的Rpc接口之上,实现了基于服务的Rpc实现。


Protobuf Buffers是一种轻便高效的结构化数据存储格式,可以用于数据序列化。适合做数据存储或RPC数据交换格式。用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。


这里Fayson借助于Protobuf来生成HBase RPC数据交换格式类,在HBase中使用的Protobuf版本为2.5.0,所以选择安装相同版本的Protobuf。


1.下载Protobuf2.5.0版本的安装包,地址如下:

82f7f265d3f470dccb77cf693a175fc9b991aa6c

3.执行如下命令安装Protobuf所需要的依赖包

edbc5954fec35f3ef5ed0beeb13bb46c770e76ca

f370cae53efb3c0f17094a39372618ed57cf2e16

6.准备HBase测试表,建表脚本及测试数据如下

fe69dfd83195a56c420533d6654abd63e5373d0d

3.使用Protobuf生成序列化类



1.准备MyFirstCoprocessor.proto文件,内容如下

3fa901a5d2da8745a7f8d66c9a245aa81f177494

0dc50c60e824b64f888a2f4280cd4320c229e105

2.在命令行执行如下命令生成Java类

4d576c0e66e0e5498034dbb5fa95cae0c5e223e0

4.Endpoint Coprocessor服务端实现



1.使用Maven创建Java示例工程,pom.xml文件内容如下

870838ff6a3ed8c56c36944053510225939235ea

0824ec69abf8f883efe6bf3b4fcf28c4b51774f0

2.将Protobuf生成的java类拷贝至指定的包目录下

与MyFirstCoprocessor.proto文件指定的java_package包目录一致。

9dcfde35a2fb0c8ff09a4a2a708c86ff4cee00d1

3.在com.cloudera.hbase.coprocessor.server包下新建MyFirstCoprocessorEndpoint实现类,内容如下

4f336c737118f75802fe041a86bcf081087e9661

30f6cd59568540b9015b50dd4b921dd5fc184b0d

4c30df9d7d7f986e72ddfd71dc8e8871fdfdf82d

bb7bd71ab59a62f110488b2aeea702004e5abd77

91a6c6760a35a38a86941d74f2dca1a41991b674

5.Endpoint Coprocessor客户端实现



1.编写MyFirstCoprocessExample.java类,代码如下:

464ed295f79db0ce13b23c5bf11ea2395f16ae7f

976b266d2d3a0925ccf2a6968717bf78f3474e3c

66fd62962a0e5d51b28f9af41008c78770de0110

c7967d7dbc8e00c001f136cbcf4fbf002c81dc2c

537d38d5ab4e9186380e018193efa84ad17bdac6

6.部署及调用



1.使用mvn编译工程

7949e9a2bdff269543d5532c6acc795a9eda39e3

在客户端调用的示例代码中使用的是代码为指定的表添加Coprocessor操作,所以这里不需要在HBase中配置全局的Coprocessor。


3.运行MyFirstCoprocessorExample代码,查看运行结果

23b914ead202393c4e877a4df264037129eaec00

统计的值与我们写入的数据一致。


7.总结



  • 在开发HBase的Coprocessor借助于Protobuf生成RPC请求数据交互类,我们只需要在生成的类基础上实现业务即可。

  • 本篇文章主要介绍了怎么样通过代码的方式为指定的HBase表添加Coprocessor,这种方式使用更灵活,不需要重启HBase服务。

  • 将编写好的Coprocessor jar上传至HDFS,确保文件的目录属主。

  • HBase自带的也有AggregateImplementation类实现列的聚合,原生的不能同时对多个列进行聚合处理,如果需要多次聚合则需要多次调用RPC请求,HBase数据在不断的写入会出现每次聚合的结果有偏差,本示例将聚合放在一个RPC中处理可以减少RPC的请求次数并确保查询条件相同的情况下不会出现数据不一致问题。

 

GitHub地址:

https://github.com/fayson/cdhproject/blob/master/hbasedemo/proto/MyFirstCoprocessor.proto

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

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

https://github.com/fayson/cdhproject/blob/master/hbasedemo/src/main/java/com/cloudera/hbase/coprocessor/client/MyFirstCoprocessExample.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
相关文章
|
3月前
|
SQL Java 分布式数据库
Flink CDC HBase字段类型与Flink SQL类型之间的转换
【1月更文挑战第4天】【1月更文挑战第19篇】Flink CDC HBase字段类型与Flink SQL类型之间的转换
62 1
|
7月前
|
大数据 分布式数据库 Docker
基于Docker搭建大数据集群(七)Hbase部署
基于Docker搭建大数据集群(七)Hbase部署
|
4月前
|
Java Shell 分布式数据库
Pinpoint【部署 01】JDK\HBase\Pinpoint Collector+Web 最新版 2.3.3 安装配置运行验证及脚本文件分享(避坑指南捷径指北)20230228
Pinpoint【部署 01】JDK\HBase\Pinpoint Collector+Web 最新版 2.3.3 安装配置运行验证及脚本文件分享(避坑指南捷径指北)20230228
75 0
|
5月前
|
Shell 分布式数据库 数据库
97 hbase开发
97 hbase开发
30 0
|
存储 分布式计算 NoSQL
大数据编程技术基础实验七:HBase实验——部署HBase
大数据技术基础实验七,.掌握HBase集群安装部署及HBase Shell的一些常用命令的使用。
351 0
大数据编程技术基础实验七:HBase实验——部署HBase
|
11月前
|
存储 分布式计算 Ubuntu
|
11月前
|
存储 分布式计算 Ubuntu
|
Shell 测试技术 分布式数据库
HBase实验:部署HBase
HBase实验:部署HBase
HBase实验:部署HBase
|
存储 缓存 分布式计算
Hadoop原理与技术——Hbase实操
Hadoop原理与技术——Hbase实操
109 0
Hadoop原理与技术——Hbase实操
|
分布式计算 Hadoop 分布式数据库
HBase 部署
HBase 部署
100 0