- region
- meta表
- MemStore
- store
- HFile
- Hbase写文件流程
- 读流程
当Region服务器收到写请求的时候,Region服务器会将请求转至相应的Region。
- 数据写入到Memstore
- Memstore到达一定的阀值的时候,完成对数据的排序
- 按照顺序将Memstore中的数据持久化到HFile中
为了定位每个Region所在的位置,就可以构建一张映射表,映射表的每行包含两项内容,一个是Region标识,一个是RegionServer标识等信息,这行就表示Region和Region服务器之间的对应关系,从而就可以知道某个Region被保存在哪个Region服务器中。
MemStore当Region服务器收到写请求的时候,Region服务器会将请求转至相应的Region。
数据首先写入到Memstore,然后当Memstore到达一定的阀值的时候,完成对数据的排序,然后按照顺序将Memstore中的数据持久化到HFile中。
Memstore存储了最近插入的数据,检索近期插入的数据时,速度相当快,检索时间久的磁盘数据时,速度就会慢些。
Store是存储数据的核心,存储的是同一个列族下的数据,每个Store包含有一块MemStore和0个或多个StoreFile。StoreFile是Hbase中最小的数据存储单元。
用户写入的数据首先会放入MemStore,当MemStore满了以后会Flush成一个StoreFile(底层实现是HFile), 当StoreFile文件数量增长到一定阈值,会触发Compaction合并 *** 作。
HFileHFile里面的每个键值对就是一个简单的byte数组。但是这个byte数组里面包含了很多项,并且有固定的结构。
Hbase写文件流程客户端首先访问zookeeper,从meta表得到写入数据对应的region信息和相应的region服务器。
找到相应的region服务器,把数据分别写到HLog和MemStore上一份。
MemStore达到阈值后则把数据刷成一个StoreFile文件。(若MemStore中的数据有丢失,则可以从HLog上恢复)。
当StoreFile文件达到一定的数量后,会触发Compact合并 *** 作,合并为一个StoreFile
当Storefile大小超过一定阈值后,会把当前的Storefile分割为两个(Split分裂)
客户端先访问zookeeper,从meta表读取Region的信息对应的服务器。
客户端向对应Region服务器发送读取数据的请求,Region接收请求后,先从MemStore找数据,如果没有,再到StoreFile上读取,然后将数据返回给客户端。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)