Hbase流程框架
Hbase 总体框架
注意点
1 客户端如果是针对数据的增删改查(DML)那么不需要经过HMaster
2 每一个store是一个文件夹,存储的是一个列族在这个regin下的数据;flush就会在hdfrs上store文件夹形成一个HFile文件,这样时间久了会有很多小文件,后面会有针对这些小文件的合并和split。
3 Hlog操作日志是实时落盘的,真正的内存数据是flush时落盘HFile
1 Hbase写数据流程1
写数据是先写Hlog,实时落盘,之后再写入内存,但是Hlog写入也是事务的,如果日志存储失败,内存中的数据也会一并删除。
2 Hbase读数据流程1
读数据流程在具体的reginserver上,是读storeFile+MemStore+BlockCache一块读取,然后看时间戳最新的rowkey的记录。但是因为一个store是一个文件夹,里面有多个hFile文件,如果BlockCache已经缓存了一个HFile文件了,那么就在读取store文件夹(一个列族的其中一个regin)里面相关记录的其他文件就好了。综上所述,读比写要慢。
3 Hbase compact合并小文件流程
注意:1) minor不会删除历史时间戳的记录,但是major大合并只会保留最新的数据记录。
2)另外一个删除历史数据的时机是flush的时候,但是只会删除相同rowkey的多条时间戳记录都在内存的情况下。