昨天,我们讲到了HBase的逻辑结构,今天我们来看一下HBase的存储及访问原理。
一、从上图我们可以看到,用户首先通过client端发起HBase的数据访问请求。Client一般为Java、C 等程序端,并绑定了HBase的开发工具包SDK。
二、Client从ZooKeeper中拿到HBase的HRegionServer的主节点地址,ZooKeeper负责RegionServer的主节点的动态管理、选择。
三、HMaster是HBase 的主节点,负责整个集群的状态感知、负载分配、负责用户表的元数据(schema)管理。
四、RegionServer是HBase 中真正负责管理 Region 的服务器,也就是负责为客户端进行表数据读写的服务器。每一台 RegionServer 会管理很多的 Region。并不是同一台RegionServer只能为一个表服务,而是为许多表提供服务。RegionServer将正在服务的Region放入内存中,并最终持久化至HDFS中进行数据的落盘。
五、Region是 HBase 将一个表中的所有数据按照 RowKey 的不同范围进行切割的逻辑单元,每个 Region 负责一定范围数据的读写访问。该Region在RegionServer中进行管理,并最终存储在HDFS中。
大家是否发现HBase与Hive有类似的地方,都是管理数据表。那他们的区别是什么呢?我们明天讲HBase第三章。