Hbase使用协处理器的注意点

本文深入探讨了HBase中协处理器的使用要点,包括代码错误可能导致的节点故障、同一表操作的注意事项、不同表的独立对象需求、协处理器的加载方式及分类。详细介绍了Observer与Endpoint两种协处理器类型,以及它们在HBaseServer端的运行机制,如put操作的钩子函数和聚合操作的执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hbase使用协处理器的注意点

 1. 协处理器在使用时如果代码出错会使,hbase的节点死掉当节点死掉可以重启服务,删除挂载协处理器的表,或者是卸载协处理器
 2. 协处理器是在使用时对同一张表的操作是不用再创建一个表的对象,否则可能会使节点的hbase死掉。
 3. 对不同表需要使用不同的表对象
 4. 一个表可以挂载多个协处理器,如果有多个则按照挂载顺序来

协处理器的分类

Observer

Observer 类似于传统数据库中的触发器,当发生某些事件的时候这类协处理器会被 Server 端调用。
Observer Coprocessor 就是一些散布在 HBase Server 端代码中的 hook 钩子, 在固定的事件发生时被调用。
比如:put 操作之前有钩子函数 prePut,该函数在 put 操作执行前会被 Region Server 调用;在 put 操作之后则有 postPut 钩子函数
  • RegionObserver:针对Region的观察者,可以监听关于Region的操作
  • RegionServerObserver:针对RegionServer的观察者,可以监听关于RegionServer的操作
  • WALObserver:针对WAL的观察者,可以监听关于WAL的操作
  • MasterObserver:针对Master的观察者,可以监听关于Master的操作

endpoint

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

2. 协处理加载方式

协处理器的加载方式有两种,我们称之为静态加载方式(Static Load)和动态加载方式 (Dynamic Load)。静态加载的协处理器称之为 System Coprocessor,动态加载的协处理器称 之为 Table Coprocessor。

  1. 静态加载

    通过修改 hbase-site.xml 这个文件来实现,启动全局 aggregation,能过操纵所有的表上 的数据。只需要添加如下代码:

    <property>
    	<name>hbase.coprocessor.user.region.classes</name>
    	<value>类全名</value>
    </property>
    

    可以用”,”分割加载多个 class

  2. 动态加载
    只对特定的表生效。通过 HBase Shell 来实现。

    1. 停用表  disable ‘mytable’
    2. 添加协处理器  alter ‘t_guanzhu’,METHOD => ‘table_att’,‘coprocessor’=>‘hdfs://supercluster/jar/mycoprocessor.jar|com.qf.hbase.coprocessor.MyIndexCoprocessor|1001|’
  3. 启用表  enable ‘mytable’

  4. 协处理器卸载。同样是3步

    1. disable ‘mytable’
    2. alter ‘mytable’,METHOD=>‘table_att_unset’,NAME=>‘coprocessor$1’
    3. enable ‘mytable’
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值