栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

HBase的协处理器

HBase的协处理器

协处理器

这个得对比hive比较
Hbase和hive比没有天生的分布式计算能力,可以理解hive节点都有"后门"可以进行分布式计算,本来Hbase是没有的但是通过协处理器,他便有了一定的分布式计算功能,(他原先下的存储功能比hive好)

协处理器有两种: observer 和 endpoint observer协处理器

Observer 类似于传统数据库中的触发器,当发生某些事件的时候这类协处理器会被 Server 端调用。Observer Coprocessor 就是一些散布在 Hbase Server 端代码中的 hook 钩子, 在固定的事件发生时被调用。比如: put 操作之前有钩子函数 prePut,该函数在 put 操作

下图是以 RegionObserver 为例子讲解 Observer 这种协处理器的原理:

1.客户端发起get请求
2.该请求被分派给合适的RegionServer和Region
3.coprocessorHost拦截该请求,然后在该表上登记的每个RegionObserer上调用preGet()
4.如果没有被preGet拦截,该请求继续送到Region,然后进行处理
5.Region产生的结果再次被coprocessorHost拦截,调用posGet()处理
6.加入没有postGet()拦截该响应,最终结果被返回给客户端

endpoint协处理器

Endpoint 协处理器类似传统数据库中的存储过程,客户端可以调用这些 Endpoint 协处理器执行一段 Server 端代码,并将 Server 端代码的结果返回给客户端进一步处理,最常见的用法就是进行聚集操作
如果没有协处理器,当用户需要找出一张表中的最大数据,即max 聚合操作,就必须进行全表扫描,在客户端代码内遍历扫描结果,并执行求最大值的操作。这样的方法无法利用底层集群的并发能力,而将所有计算都集中到 Client 端统一执 行,势必效率低下。

利用 Coprocessor,用户可以将求最大值的代码部署到 Hbase Server 端,Hbase 将利用底层 cluster 的多个节点并发执行求最大值的操作。即在每个 Region 范围内 执行求最大值的代码,将每个 Region 的最大值在 Region Server 端计算出,仅仅将该 max 值返回给客户端。在客户端进一步将多个 Region 的最大值进一步处理而找到其中的最大值。这样整体的执行效率就会提高很多
图是 EndPoint 的工作原理:

Hbase的协处理器
  • observer:拦截put/get/scan/delete之类的操作,执行协处理器对应的代码(Java实现的——将Java实现好的协处理器直接打成一个JAR包,JAR包可以放在HDFS上,部署到Hbase)。例如:Phoenix插入一条数据,同时更新索引
  • endpoint:可以使用Java编写一些逻辑,将JAR包部署到Hbase,就可以实现一些扩展的功能。例如:Phoenix的select countmax…
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/582125.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号