由{rowkey, column Family:column Qualifier, time Stamp} 唯一确定的单元。cell 中的数 据是没有类型的,全部是字节码形式存贮。
五、HBase基础架构
名称
解释
Region Server
Region Server 为 Region 的管理者,其实现类为 HRegionServer,主要作用如下: 对于数据的操作:get, put, delete;对于 Region 的操作:splitRegion、compactRegion。
Master
Master 是所有 Region Server 的管理者,其实现类为 HMaster,主要作用如下: 对于表的操作:create, delete, alter。对于 RegionServer 的操作:分配 regions 到每个 RegionServer,监控每个 RegionServer的状态,负载均衡和故障转移。
1~2. Client 先访问 zookeeper,获取 hbase:meta 表位于哪个 Region Server。
3~5. 访问对应的 Region Server,获取 hbase:meta 表,根据读请求的 namespace:table/rowkey, 查询出目标数据位于哪个 Region Server 中的哪个 Region 中。并将该 table 的 region 信息以及 meta 表的位置信息缓存在客户端的 meta cache,方便下次访问。
6. 与目标 Region Server 进行通讯
7. 将数据顺序写入(追加)到 WAL
8. 将数据写入对应的 MemStore,数据会在 MemStore 进行排序
9. 向客户端发送 ack
10. 等达到 MemStore 的刷写时机后,将数据刷写到 HFile[图中未标出数字],这里就是flush流程
2.读流程
Client 先访问 zookeeper,获取 hbase:meta 表位于哪个 Region Server。
访问对应的 Region Server,获取 hbase:meta 表,根据读请求的 namespace:table/rowkey, 查询出目标数据位于哪个 Region Server 中的哪个 Region 中。并将该 table 的 region 信息以 及 meta 表的位置信息缓存在客户端的 meta cache,方便下次访问。
与目标 Region Server 进行通讯
分别在 Block Cache(读缓存),MemStore 和 Store File(HFile)中查询目标数据,并将查到的所有数据进行合并。此处所有数据是指同一条数据的不同版本(time stamp)或者不同的类型(Put/Delete),这里就是compact流程。