HBaseCoprocessor剖析与编程实践

HBaseCoprocessor剖析与编程实践

ID:44266568

大小:237.99 KB

页数:5页

时间:2019-10-20

HBaseCoprocessor剖析与编程实践_第1页
HBaseCoprocessor剖析与编程实践_第2页
HBaseCoprocessor剖析与编程实践_第3页
HBaseCoprocessor剖析与编程实践_第4页
HBaseCoprocessor剖析与编程实践_第5页
资源描述:

《HBaseCoprocessor剖析与编程实践》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1.起因(WhyHBaseCoprocessor)HBase作为列族数据库最经常被人诟病的特性包括:无法轻易建立“二级索引”,难以执行求和、计数、排序等操作。比如,在I口版木的«0.92)Hbase中,统计数据表的总行数,需要使JUCounter方法,执行一次MapReduceJob才能得到。虽然HBase在数据存储层屮集成了MapReduce,能够有效用丁•数据表的分布式计算。然而在很多情况下,做一些简单的相加或者聚合计算的时候,如果直接将计算过程放置在server端,能够减少通讯开销,从而获得很好的性能提升。于是,HBase在0.92之后引入了协处理器(coprocessors)

2、,实现一些激动人心的新特性:能够轻易建立二次索引、复杂过滤器(谓词下推)以及访问控制等。2•灵感来源(SourceofInspration)HBase协处理器的灵感来自于JeffDean09年的演讲(P66-67)。它根据该演讲实现了类似于bigtable的协处理器,包括以下特性:•每个表服务器的任意子表都可以运行代码•客户端的高层调用接口(客户端能够直接访问数据表的行地址,多行读写会自动分片成多个并行的RPC调用)•提供一个非常灵活的、可用于建立分布式服务的数据模型•能够自动化扩展、负载均衡、应用请求路由HBase的协处理器灵感来自bigtable,但是实现细节不尽相同。HBase

3、建立了一个框架,它为用户提供类库和运行时环境,使得他们的代码能够在HBaseregionserver和master上处理。3•细节剖析(Implementation)协处理器分两种类型,系统协处理器可以全局导入regionserver上的所有数据表,表协处理器即是用户可以指定一张表使用协处理器。协处理器框架为了更好支持其行为的灵活性,提供了两个不同方面的插件。一个是观察者(observer),类似于关系数据库的触发器。另一个是终端(endpoint),动态的终端有点像存储过程。3.1观察者(Observer)观察者的设计意图是允许用户通过插入代码来重载协处理器框架的upcall方法,

4、而具体的事件触发的callback方法由HBase的核心代码來执行。协处理器框架处理所有的callback调用细节,协处理器自身只需要插入添加或者改变的功能。以HBaseO.92版本为例,它提供了三种观察者接口:•RegionObserver:提供客户端的数据操纵事件钩子:Get、Put>Delete>Sean等。•WALObserver:提供WAL相关操作钩子。•MasterObserver:提供DDL-类型的操作钩子。如创建、删除、修改数据表等。这些接口可以同时使用在同一个地方,按照不同优先级顺序执行•用户可以任意基于协处理器实现复杂的HBase功能层。HBase有很多种事件可以

5、触发观察者方法,这些事件与方法从HBaseO.92版本起,都会集成在HBaseAP1中。不过这些APT可能会由于各种原因有所改动,不同版本的接口改动比较人,具体参考JavaDoCcRegionObserverI作原理,如图1所示。更多关于Observer细节请参见冊aseBook的第9.6.3章节。图1RegionObserver工作原理3.2终端(Endpoint)终端是动态RPC插件的接口,它的实现代码被安装在服务器端,从而能够通过HBaseRPC唤醒。客户端类库提供了非常方便的方法來调用这些动态接口,它们可以在任意时候调用一个终端,它们的实现代码会被H标region远程执行,结

6、果会返冋到终端。用户可以结合使用这些强大的插件接口,为HBase添加全新的特性。终端的使用,如下而流程所示:1.定义一个新的protocol接口,必须继承CoprocessorProtocol.2.实现终端接口,该实现会被导入region环境执行。3.继承抽象类BaseEndpointCoprocessor.4.在客户端,终端可以被两个新的HBaseClientAPT调用。单个region:HTablelnterface.coprocessorProxy(Classprotocol,byte[]row)。rigons区域:HTablelnterface.coprocessorE

7、xec(Classprotocol,byte[]startKey,byte[]endKey,Batch.Callcallable)整体的终端调用过程范例,如图2所示:ClientCodeBatch.CalkCountProtocintcalKCountlreturnp.getl}table.,12345678execCoprocessorOtable.bbb.12345678table.ccc.12345678RegionServer1Re

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。