(1)HBase文件在HDFS上的存储。
Hadoop适用与离线海量数据的批处理,不支持数据的实时处理,HBase是支持实时计算的分布式数据库。HBase上的数据是以二进制流的形式存储在HDFS上的数据块中的,但是,HBase上的存储数据对于HDFS是透明的。HBase可以直接使用本地文件系统,也可以使用Hadoop的HDFS。HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算有机地结合在一起。下面图6-1是HBase文件在HDFS上的存储示意图。
图6-1 HBase文件在HDFS上的存储示意图
HBase巧妙地将大而稀疏的表放在商用的服务器集群上。HBase的体系架构,即LSM-Tree+region分区+Cache提供了HBase的实时计算服务功能。在服务器启动时将打开的HRegion servers集群中的所有的region,客户端能够定位到要查数据所在的HRegion server服务器,然后直接在服务器的一个region上查找要匹配的数据,并且这些数据部分是经过cache缓存的,HBase读取首先会在缓存中查找。
(2)HBase的物理存储。
表中的所有行都是按照行键的字典序排列的。因为一张表中包含的行的数量非常多,有时候会高达几亿行,所以需要分布存储到多台服务器上。因此,当一张表的行太多的时候,HBase就会根据行键的值对表中的行进行分区,每个行区间构成一个“分区(Region)”,包含了位于某个值域区间内的所有数据,如图6-2所示。
图6-2 HBase的Region存储模式图(www.xing528.com)
Region是按大小分割的,每个表一开始只有二个Region,随着数据不断插入到表中,Region不断增大,当增大到一个阈值的时候,Region就会等分为两个新的Region。当表中的行不断增多时,就会有越来越多的Region,如图6-3所示。
图6-3 HBase的Region分裂示意
Region是HBase中数据分发和负载均衡的最小单元,默认大小是100 MB到200 MB。不同的Region可以分布在不同的Region Server上,但一个Region不会拆分到多个Region Server上。每个Region Server负责管理一个Region集合。如图6-4所示。
图6-4 HBase的Region分布模式
Region是HBase在Region Server上数据分发的最小单元,但并不是存储的最小单元。事实上,每个Region由一个或者多个Store组成,每个Store保存一个列族的数据。每个Store又由一个memStore和0至多个Store File组成,如图6-5所示。Store File以HFile格式保存在HDFS上。
图6-5 HBase的Region存储模式
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。