1、 HBase架构原理组成概述
1)StoreFile
保存实际数据的物理文件,StoreFile以HFile的形式存储在HDFS上
每个Store会有一个或多个StoreFile,数据在每个StoreFile中都是有序的
2)MemStore
写缓存,由于HFile中的数据要求是有序的,所以数据是先存储在MemStore中,
排好序后,等到达刷写时机才会刷写到HFile,每次刷写都会形成一个新的HFile
3)WAL
由于数据要经MemStore排序后才能刷写到HFile,但把数据保存在内存中会有很高的概率导致数据丢失,
为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入MemStore中。
所以在系统出现故障的时候,数据可以通过这个日志文件重建。
2、 HBase的写流程介绍:
1)Client先访问zookeeper,获取hbase:meta表位于哪个Region Server
2)访问对应的Region Server,获取hbase:meta表,
根据读请求的namespace:table/rowkey,查询出目标数据位于哪个Region Server中的哪个Region中
3)与目标Region Server进行通讯
4)将数据顺序写入(追加)到WAL
5)将数据写入对应的MemStore,数据会在MemStore进行排序
6)向客户端发送ack
7)等达到MemStore的刷写时机后,将数据刷写到HFile
3、 HBase中MemStore刷写时机
1. 当某个memstore的大小达到了hbase.hregion.memstore.flush.size(默认值128M),其所在region的所有memstore都会刷写
2. 到达自动刷写的时间,也会触发memstore flush
|
|