HBase详细, 分布式部署

313 阅读2分钟

1. HBase的由来:

HBase 的原型是 Google 的 BigTable 论文,受到了该论文思想的启发,目前作为 Hadoop 的 子项目来开发维护,用于支持结构化的数据存储。

  • 官方网站:hbase.apache.org

  • 2006 年 Google 发表 BigTable 白皮书

  • 2006 年开始开发 HBase

  • 2008 年北京成功开奥运会,程序员默默地将 HBase 弄成了 Hadoop 的子项目

  • 2010 年 HBase 成为 Apache 顶级项目

1.1 HBase的角色

  1. HMaster

    1. 监控RegionServer
    2. 处理RegionServer故障转移
    3. 处理元数据变更
    4. 处理region的分配和移除
    5. 进行负载均衡
    6. 通过zookeeper发布自己的位置给客户端
  2. RegionServer

    1. 负责存储HBase的数据
    2. 处理分配给自己的region
    3. 刷新缓存到HDFS
    4. 维护Hlog(恢复数据)
    5. 执行压缩
    6. 处理region分片
  3. 组件

    1. Write-Ahead logs

    HBase 的修改记录,当对 HBase 读写数据的时候,数据不是直接写进磁盘,它会在内存中 保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率 引起数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中, 然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。

    1. HFile

    这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。

    1. Store

    HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族。

    1. MemStore

    顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在 WAL 中之后,RegsionServer 会在内存中存储键值对。

    1. Region

    Hbase 表的分片,HBase 表会根据 RowKey 值被切分成不同的 region 存储在 RegionServer 中, 在一个 RegionServer 中可以有多个不同的 region。

HBase原理图:

不好意思各位, 如果大家想看的话, 请登录apache官方,

abloz.com/hbase/book.…

当前地址下, 查看中文文档, 超全~