1. HBase的由来:
HBase 的原型是 Google 的 BigTable 论文,受到了该论文思想的启发,目前作为 Hadoop 的 子项目来开发维护,用于支持结构化的数据存储。
-
官方网站:hbase.apache.org
-
2006 年 Google 发表 BigTable 白皮书
-
2006 年开始开发 HBase
-
2008 年北京成功开奥运会,程序员默默地将 HBase 弄成了 Hadoop 的子项目
-
2010 年 HBase 成为 Apache 顶级项目
1.1 HBase的角色
-
HMaster
- 监控RegionServer
- 处理RegionServer故障转移
- 处理元数据变更
- 处理region的分配和移除
- 进行负载均衡
- 通过zookeeper发布自己的位置给客户端
-
RegionServer
- 负责存储HBase的数据
- 处理分配给自己的region
- 刷新缓存到HDFS
- 维护Hlog(恢复数据)
- 执行压缩
- 处理region分片
-
组件
- Write-Ahead logs
HBase 的修改记录,当对 HBase 读写数据的时候,数据不是直接写进磁盘,它会在内存中 保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率 引起数据丢失,为了解决这个问题,数据会先写在一个叫做 Write-Ahead logfile 的文件中, 然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。
- HFile
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。
- Store
HFile 存储在 Store 中,一个 Store 对应 HBase 表中的一个列族。
- MemStore
顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在 WAL 中之后,RegsionServer 会在内存中存储键值对。
- Region
Hbase 表的分片,HBase 表会根据 RowKey 值被切分成不同的 region 存储在 RegionServer 中, 在一个 RegionServer 中可以有多个不同的 region。
HBase原理图:
不好意思各位, 如果大家想看的话, 请登录apache官方,
当前地址下, 查看中文文档, 超全~