NoSQL的存储架构——HBase

  1. HBase的分布式存储架构

HBase的部署遵从主从模式,通常有一个主机和一组从机,俗称range server。启动时,主机会给每台range server 分配一组区间,每个区间包含一个行记录的有序集合,行记录有行健唯一标识。如果存储在区间中的行记录数量超过了配置的阈值,区间就会分割成两个新的区间,行记录在这两个新的区间之间分配。

每个区间都有内存存储(缓存)和WAL(预写日志)。WAL是在数据库系统中提供原子性和持久性的一族技术。客户端程序能决定是否开启WAL,关闭能提升性能,但是在出现错误时会降低可靠性和恢复能力。开启后,数据写入区间前会先写日志,然后写入区间的内存存储。内存存储填满后,数据会栓如磁盘,持久化到底层分布式存储中。

如果使用了类似HDFS(hadoop distributed filesystem,hadoop分布式文件系统)的分布式文件系统,那么主从模式还会扩展到底层存储架构。HDFS中,一个namenode和一组datanode形成的结构非常类似于HBase等列数据库中主服务器和range server的配置。这种情况下,HBase的每个列族的物理存储文件最终会落到HDFS的datanode上。HBase利用文件系统API避免与HDFS强耦合,是中介。这个API还支持HBase无缝的集成其他类型的文件系统,比如HBase可以使用CloudStore,它的前身是KFS(kosmos filesystem),而不是HDFS。

除了利用分布式文件系统做存储,HBase集群还利用到了外部配置与协调工具。google中是chubby,hadoop中我们称为ZooKeeper。Hytertable也有一个类似的基础设施部件,名为Hyterspace。ZooKeeper集群通常用作HBase集群的前端,负责处理新客户和管理配置。

第一次使用HBase时,客户端先通过ZooKeeper访问两个目录-ROOT-和.META。这些目录维护着所有区间的状态和位置信息。

  1. -ROOT-维护和所有.META表相关的信息。
  2. .META文件维护和用户空间表(保存数据的表)相关的信息。

客户端访问某行数据时:

  1. 访问ZooKeeper要-ROOT-的目录。
  2. 从-ROOT-的目录定位到行记录的.META目录(提供了和行记录有关的所有区间的明细)。
  3. 用这个信息访问行记录。

当客户端下一次在访问同一行数据时,不会再重复。因为有缓存,可以直接访问region server。只有在区间缓存过期,区间被禁用或者区间无法访问的情况下才会重复查找步骤。

每个区间通常用存储的最小行键来标识,所以查找行记录非常简单,检查行键大于等于区间标识符就可。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值