
HBase 架构简介
一、概览
图 1
图 1 指出了在 HBase 中其实有两种文件,一种是 write-ahead log,而另一种
则是真正存储数据的地方。而这些文件都被 HRegionServers 来处理。从图中可以
看出,文件最后在 HDFS 中存在不同的 block 中。
基本的通信流程是这样的:当一个 client 需要查询某一特点的 row 时,它会
先连到 Zookeeper(事实上是 ZK 管理的集群),并且从 zookeeper 获取持有-ROOT-
的 region 的 server name,有了这个信息以后,我们就可以去寻找包含刚刚我们
查询的 row 的.META.的 region 的 server name。这些信息都会被客户端缓存下来。
最后,我们可以通过.META.找到持有我们所查询的 rowkey 的 region。一旦获取
了这个 row 在哪个 region 中,这个信息也会被客户端缓存下来,所以下次再访
问的时候,就可以直接访问那个 region 了。过了一段时间后,客户端就会搜集到
相当全面的信息:查询某 row 时应到哪个 region 去找,从而不需要去查询.META.
了。
当 HBase 启动时,HMaster 负责向各个 RS 分配 region,其中当然也包括了
-ROOT-和.META.某 RS 打开一个 Region,这时会创建一个相应的 HRegion 对象,
当 HRegion 打开时,它会为每一个 HColumnFamily 创建一个 Store,每一个 Store
都会有一个或者多个 StoreFile 的实例,它是对真正的存储文件 HFile 的轻量级封
装。每一个 Store 都会有一个 MemStore,并且整个 RS 会共享一个 HLog 实例。
评论