HBase简介

HBase简介
    HBase是一个分布式的、面向列的开源数据库,该技术的思想来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。
    就像Bigtable利用了Google文件系统(GFS)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。
    HBase是Apache的 Hadoop 项目的子项目。
    HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库;另一个不同的是HBase基于列的而不是基于行的模式。
    HBase可集群化,可以使用shell、web、api等多种方式访问,适合高读写(insert)的场景,是NoSQL的典型代表产品。

Hbase逻辑模型
    以表的形式存放数据
    表由行与列组成,每个列属亍某个列族,由行和列确定的存储单元称为元素
    每个元素保存了同一份数据的多个版本,由时间戳来标识区分


行键
    行键是数据行在表里的唯一标识,并作为检索记录的主键
    访问表里的行只有三种方式:
      1 通过单个行键访问
      2 给定行键的范围访问
      3 全表扫描
    行键可以是最大长度不超过64KB的任意字符串,并按照字典序存储
    对于经常要一起读取的行,要对行键值精心设计,以便它们能放在一起存储

列族与列
    列表示为<列族>:<限定符>
    Hbase在磁盘上按照列族存储数据,这种列式数据库的设计非常适合于数据分析的情形
    列族里的元素最好具有相同的读写方式(例如等长的字符串),以提高性能

时间戳
    对应每次数据操作的时间,可由系统自动生成,也可以由用户显式的赋值
    Hbase支持两种数据版本回收方式:1 每个数据单元,只存储指定个数的最新版本; 2 保存指定时间长度的版本(例如7天)
    常见的客户端时间查询:“某个时刻起的最新数据”或“给我全部版本的数据”
    元素由行键、列族:限定符、时间戳唯一决定
    元素以字节码形式存放,没有类型之分

HBase物理模型


Region和Region服务器
    表在行方向上,按照行键范围划分成若干的Region
    每个表最初只有一个region,当记录数增加到超过某个阈值时,开始分裂成两个region
    物理上所有数据存放在HDFS,由Region服务器提供region的管理
    一台物理节点只能跑一个HRegionServer
    一个Hregionserver可以管理多个Region实例
    一个Region实例包括Hlog日志和存放数据的Store
    Hmaster作为总控节点
    Zookeeper负责调度

HLog
    用于灾难恢复
    预写式日志,记录所有更新操作,操作先记录进日志,数据才会写入

-ROOT- 和 .META. 表
    HBase中有两张特殊的Table,-ROOT-和.META.
    .META.:记录了用户表的Region信息,.META.可以有多个regoin
    -ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region
    Zookeeper中记录了-ROOT-表的location


Memstore与Storefile
    一个region由多个store组成,每个store包含一个列族的所有数据
    Store包括位于内存的memstore和位于硬盘的storefile
    写操作先写入memstore,当memstore中的数据量达到某个阈值,HRegionServer会启动flashcache进程写入storefile,每次写入形成单独一个storefile
    当storefile文件的数量增长到一定阈值后,系统会进行合并,在合并过程中会进行版本合并和删除工作,形成更大的storefile
    当storefile大小超过一定阈值后,会把当前的region分割为两个,并由HMaster分配到相应的region服务器,实现负载均衡
    客户端检索数据时,先在memstore找,找不到再找storefile
    如果在合并过程中恰好有涉及到有关storefile的查询发生的话,HBase会把小storefile加载到内存中进行合并,在内存中检索相关数据返回给用户。其实就是在内存中做一个独立镜像备份专门提供被查询需求;在另一块内存中进行合并,当合并完成后释放备份的内存空间,返回到原来的状态


HBase的一致性
    HBase是CAP中的CP系统,即hbase是强一致性的。对每一个 region 同时只有一台 region server 为它服务,对一个 region 所有的操作请求,都由这一台 region server 来响应。在这台 region server fail,它管理的 region failover 到其他 region server 时,需要根据 WAL log 来 redo,这时候进行 redo 的 region 是 unavailable 的,所以 HBase 降低了可用性,提高了一致性。



转载于:https://my.oschina.net/zc741520/blog/387633

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值