概述
写流程:
1:Client先访问zookeeper,得到对应的RegionServer地址
2:Client对RegionServer发起写请求,RegionServer接受数据写入内存
3:当MemStore的大小达到一定的值后,flush到StoreFile并存储到HDFS
Region是hbase存储数据的基本单元,数据都存储在Region中,每一个Region只存储一个columnFamily(列族)的数据,而且只是这个列族的一部分,当Region的大小达到某个阈值之后,会根据rowkey的排序,划分为多个Region,每个Region中包含多个Store对象,每个Store对象包含一个memStore和一个或多个Store File,memStore是数据在内存的实体,并且一般是有序的,当有数据写入的时候,回先写入到memStore中,当memStore的大小达到上限之后,Store会创建StoreFile,StoreFile便是Hfile的一层封装。
Hbase保证内存中的数据不会丢失,是使用HLog,HLog是WAL(预写日志)的一种实现,RegionServer将更新操作记录到memStore,然后更新到HLog中,只有当更新到HLog中成功后,这条记录才算真正成功的写入,当memStore数据丢失,可以使用HLog找回,注意,一般的WAL是先写入日志再写入内存,但是Hbase是先写入内存后写入日志
4-Hbase读数据流程
1:client先访问zookeeper,得到对应的RegionServer地址
访问zookeeper中的meta得到RegionServer的节点信息,将 hbase的meta表缓存到本地,再根据meta表获取要访问的表所 对应的RegionServer的信息,
2:Client对RegionServer发起读请求
3:当RegionServer收到Client的读请求后,先扫描自己的MemStore,在扫描BlockCache(加速读内容缓存区),如果还没有找到则StoreFile中读数据,然后将数据返回给Client
注意:client读写数据并没有访问Hmaster,只需要访问zookeeper就可以了,原因在于:Hmaster启动的时候会把meta的信息表加载到zookeeper中,meta表记录了hbase所有的表所有的region的详细信息,例如region开始的key,结束的key,所在regionServer的地址,habse的meta表就相当于一个目录,通过meta表可以快速定位数据的实际位置,座椅读写操作只需要与zookeeper和对应的RegionServer进行交互就可以了,Hmaster只负责维护table和region的元数据信息,协调各个regionServer,这样Hmaster的负载就小了很多
最后
以上就是粗心芒果为你收集整理的Hbase-3-4-Hbase读写数据流程的全部内容,希望文章能够帮你解决Hbase-3-4-Hbase读写数据流程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复