![20c1111c6f102e6d5f9be3b23115828d.png](https://i-blog.csdnimg.cn/blog_migrate/8963c7f8266a4c94e5e1d3a703bdfe76.jpeg)
存储
![f345691534e32e7ddbfd25fba1db279d.png](https://i-blog.csdnimg.cn/blog_migrate/5ca5d34a638f4f9752a34fbc43db60a3.jpeg)
HBase 主要处理两种文件:一种是预写日志(Write-Ahead Log,WAL),另一种是实际的数据文件。这两种文件主要由 HRegionServer 管理。
一个基本的流程是客户端首先联系 ZooKeeper 子集群(quorum)查找行键,通过 ZooKeeper 获取含有 -ROOT- 的 region 服务器,通过 -ROOT- region 服务器可以查询到含有 .META. 表的 region 服务器,最终,通过查询 .META. 服务器来获取客户端查询的行键数据所在的 region 服务器。
在启动 HBase 时,HMaster 负责将所有 region 分配到 HRegion Server 上,其中也包括特别的 -ROOT- 和 .META. 表。
HRegionServer 负责打开 region,并创建对应的 HRegion 实例。当 HRegion 被打开后,它会为每个表的 HColumnFamily 创建一个 Store 实例,这些列族是用户之前创建表时定义的。每个 Store 实例包含一个或多个 StoreFile 实例,它们是实际数据存