Hbase总结05_客户端高级特性

该部分总结的HBase权威指南

过滤器

用来减少查询结果的数量,在服务端进行过滤行为,减少和客户端的网络传送。实例化过滤器需要提供两个参数:比较运算符和比较器。

比较运算符

Hbase总结05_客户端高级特性_第1张图片

HBase内置的比较器

Hbase总结05_客户端高级特性_第2张图片

比较过滤器

行过滤器

    行过滤器用于过滤行键(rowkey)

列簇过滤器

     过滤列簇

列名过滤器

    筛选特定的列

值过滤器

    对列的值进行过滤,找到值满足需求的列

参考列过滤器

    指定一个列作为参考,用来过滤其他列

专用过滤器

单列值过滤器

    指定某列对其进行值比较(使用频率最高的filter)

    setFilterIfMissing(true)可以将不存在该列的行过滤掉,否则如果该列不存在也被放到查询结果中了

 

单列排除过滤器

    参考列不包含结果中

前缀过滤器

    与前缀匹配的行都会返回

分页过滤器

    对结果进行分页,需要制定pageSize

行键过滤器

    只将结果总KeyValue实例的健返回,不返回value值

首次行键过滤器

    只比较一行中的第一列,可以做 行数统计用

包含结束的过滤器

    扫描中的开始行包含在结果中,但末尾航被排除在外,使用这个可以返回末尾航

时间戳过滤器

    需要传入一个时间戳实例,返回与实例时间精准匹配的数据

列计数过滤器

    限制每行最多返回多少列

列分页过滤器

    对列进行分页,需要传入offset 和 limit两个参数,从第几列开始,一共包含几个列

列前缀过滤器

    对列明进行前缀过滤

随机行过滤器

    在结果中包含随机行,需要传入一个0 到 1 的参数,过滤器内部使用Random.nextFloat()判断下行是否过滤

附件过滤器

跳转过滤器

    

全匹配过滤器

    

FilterList

组合使用多个过滤器,过滤顺序即是将过滤器传入过滤集合的顺序,

自定义过滤器

过滤器总结

Hbase总结05_客户端高级特性_第3张图片

计数器

  • 计数器实质是一个列,一个计数器对应一个列
  • 用create创建,默认起始为0,每次加1
  • 用incr增加,用get_counter 获取

单计数器

    只操作一个计数器,用户自行定义列

多计数器

  • 使用HTable()的方法increment() 创建实例,可以为实例传入行键(Rowkey),
  • 此行可以包含多个计数器,
  • 计数器更新时有锁,读取时没有锁

协处理器

  • 允许用户将自己的代码打包上传到服务器上,在服务器上执行region级别的操作,类是触发器
  • jar包可以动态加载
  • HBase的授权认证和审查就是基于协处理器的
  • 包含两种类型: observer 和 endpoint

observer

endpoint

Hbase总结05_客户端高级特性_第4张图片

Coprocessor接口

协处理器必须实现的借口,有两个枚举类 Priority 和 State;系统优先级大于用户优先级。

协处理器应该用getTable方法获取HTable类,这样更安全,因为这个方法会加一些默认的安全措施,比如,协处理器不可以对一行数据加锁

无法指定在哪个表操作时触发协处理器

常用方法

Hbase总结05_客户端高级特性_第5张图片

枚举类定义的状态

Hbase总结05_客户端高级特性_第6张图片

协处理器加载

可以通过配置文件加载或从表描述符加载

Hbase总结05_客户端高级特性_第7张图片Hbase总结05_客户端高级特性_第8张图片

RegionObserver

负责处理region级别的操作,属于coprocess的第一个子类

处理region生命事件

Hbase总结05_客户端高级特性_第9张图片

处理客户端API事件

    在客户端API执行前后进行拦截

RegionCoprocessorEnvironment

面向region子类提供一些特殊的方法

Hbase总结05_客户端高级特性_第10张图片

ObserverContext

    回调函数需要的上下文参数,提供了当前系统环境的入口,同时可以通知协处理器在回调函数完成时做什么

 

BaseRegionObserver

所有协处理器的基类,包含RegionObserver的所有接口的空方法,默认该类没有任何没有任何功能,用户可以自定实现某些方法,类似自定义处理器

MasterObserver

属于coprocess的第二个子类,负责处理与表操作有关的回调函数

MasterCorprocessEnvironment

封装了masterobserver类,实现了CoprocessEnvironment接口,可以依赖此类获取协处理器上下文变量或实例

BaseMasterObserver

默认实现了masterobserver接口所有方法,空实现,用户可以集成此类来自定义方法

endpoint

CoprocessorProtocol

为客户端提供的自定义RPC协议,用户通过实现和扩展这个接口可以实现任何方法

BaseEndpointCoprocessor

抽象类,包含一些需要用户自行实现的抽象方法,实现endpoint有两个步骤:

  1. 扩展CoprocessorProtocol接口,定义客户端与服务器通信RPC协议;
  2. 实现endpoint的所有方法,包含抽象类BaseEndpointCoprocessor的方法

HTablePool

  • 创建HTable很耗时,可以创建一个然后复用,HtablePool可以实现HTable的复用功能,避免反复创建浪费时间;
  • Htable不是线程安全的,在多线程并发使用时需要注意;

 

上一篇:Hbase总结04_客户端

你可能感兴趣的:(hbase)