六、HBase读取流程

1、HBase读取流程

流程分四步:

1.1、Client-Server读取交互逻辑

1.1.1、Client从ZK获取元素据所在的RS,然后查询元数数据找到key对应的目标RS,向目标RS发送请求

1.1.2、Client的scan请求或者get请求都可以看作是scan操作

1.1.3、因为有些scan会是全表扫描,结果非常大,如果Clien与Server之间的scan操作没有设计为一次RPC请求,而是多次RPC。在数据量大的情况下如果设计为一次RPC,会导致集群网络带宽等系统资源被大量占用,影响集群业务,同时客户端很有可能内存不够存不下所有结果导致OOM

1.1.4、每次RPC请求称为一次next请求,每次返回规定数量的结果,如下代码

Scan scan =  new Scan();

scan.setFilter(...);

...

scan.setMaxResultSize(1000);//一次RPC返回的数据量大小,默认是2G

scan.setCacheing(500); //数据条数 默认是Integer.MAX_VALUE

scan.setBatch(100);//一次RPC请求的列数,防止一张表有设置几万甚至几十万的列,这样一行数据就特别大。

ResultScanner rs = table.getScanner(scan);

for(Result r : rs){ ... } //for(Result r : rs) 等价于 Result r = rs.next();

1.2、构建Server端Scan框架体系《有点抽象》

RS收到请求之后做了两件事,一是构建scanner iteratore体系,然后执行next函数获取KeyValue,并对进行条件过滤。

1.2.1、Scanner的核心体系包括三层Scanner:RegionScanner,StoreScanner,MemStoreScanner和StoreFileScanner

1.3、过滤不符合条件的HFile

1.4、从HFile中读取待查找key《有难度》

1.4.1、根据HFile索引树定位到目标Block

1.4.2、BockCache中检索目标Block

1.4.3、HDFS文件中检索目标Block

2、深入理解Coprocessor(协同处理器)

2.1、Coprocessor类似于存储过程和触发器

2.2、Observer 触发器:提供钩子使用户代码在特定时间发生之前或者之后执行

HBase提供4种Observer接口

1)RegionObserver:主要监听Region相关的事件,比如get、put、scan、delete、flush等

2)RegionServerObserver:监听RS的启动、关闭、或者执行Region合并等

3)WALObserver:监听WAL写入、滚动等

4)MasterObserver:监听见表、删表以及修改表结构等

2.3、Endpoint 存储过程:比如业务需要从HBase集群加载出来几十亿行数据进行求和或者平均值。可以使用Endpoint将计算逻辑下推到RS执行。用户可以通过RPC调用执行部署在服务端的业务代码。

2.4、Coprocessor(协同处理器)加载方式

2.4.1、静态加载

1)将Coprocessor配置到hbase-site.xml中

2)将Coprocessor代码放到HBase的classpath下,对应的jar包放在HBase lib目录下

3)重启HBase集群

2.4.2、动态加载

2.4.2.1、使用shell

1)disable 'table'

2)alter 'table',METHOD=>'table_att','Coprocessor'=>'hdfs://.../coporecessor.jar| a.b.c.OberverExample "|"

3)endable 'table'

2.4.2.2、使用HTableDescriptor的setValue()方法

2.4.2.3、使用HTableDescriptor的addCoprocessor方法

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、简介 Hbase:全名Hadoop DataBase,是一种开源的,可伸缩的,严格一致性(并非最终一致性)的分...
    菜鸟小玄阅读 2,437评论 0 12
  • 客户端数据存取流程 客户端与HBase系统的写入交互阶段 用户提交put请求后,HBase客户端会将put请求添加...
    牦牛sheriff阅读 810评论 0 0
  • HBase存储架构图 HBase Master 为Region server分配region 负责Region s...
    kimibob阅读 5,646评论 0 52
  • 清晨的时候,林灵坐着魔毯飞回星星谷。远远地,她看到西西和圆圆正坐在藤屋前面的草地上,两个人不时抬头看向天空,似乎正...
    小小夕颜花阅读 214评论 1 2
  • 神经学家发现,人脑像一个求知欲很强的学生,对经验有着超乎大家想象的反应。如果你每天都让大脑学数学,他就会越来越擅长...
    乐呵呵_8df4阅读 272评论 0 1