hbase理论总结

HBase

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase 技术可在廉价 PC Server 上搭建起大规模结构化存储集群。

HBase简介

HBase 是 Apache Hadoop 中的一个子项目,HBase 依托于 Hadoop 的 HDFS 作为最基本存储基础单元,通过使用hadoop的DFS 工具就可以看到这些这些数据存储文件夹的结构,还可以通过 Map/Reduce的框架(算法)对 HBase进行操作。

HBase适用场景

  1. 大数据量存储,大数据量高并发操作
  2. 需要对数据随机读写操作
  3. 读写访问均是非常简单的操作

HBase数据模型

HBase 以表的形式存储数据。表由行和列族组成。列划分为若干个列族(row family)

  1. 行键(RowKey)
  • 行键是字节数组, 任何字符串都可以作为行键;
  • 表中的行根据行键进行排序,数据按照 Row key 的字节序(byte order)排序存储;
  • 所有对表的访问都要通过行键 (单个 RowKey 访问,或RowKey范围访问,或全表扫描)
  1. 列族(ColumnFamily)
  • CF 必须在表定义时给出
  • 每个 CF 可以有一个或多个列成员(ColumnQualifier),列成员不需要在表定义时给出,新的列族成员可以随后按需、动态加入
  • 数据按 CF 分开存储,Hbase 所谓的列式存储就是根据 CF 分开存储(每个CF 对应一个 Store),这种设计非常适合于数据分析的情形
  1. 时间戳(TimeStamp)
  • 每个 Cell可能又多个版本,它们之间用时间戳区分
  1. 单元格(Cell)
  • Cell 由行键,列族:限定符,时间戳唯一决定

  • Cell中的数据是没有类型的,全部以字节码形式存储

  1. 区域(Region)
  • HBase 自动把表水平(按 Row)划分成多个区域(region),每个region 会保存一个表里面某段连续的数据;
  • 每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region 就会等分会两个新的region;
  • 当 table 中的行不断增多,就会有越来越多的 region。这样一张完整的表被保存在多个Region 上。
  • Region 虽然是分布式存储的最小单元,但并不是存储的最小单元。Region由一个或者多个 Store 组成,每个 store 保存一个 columns family;每个Strore又由一个memStore和0至多个StoreFile组成, StoreFile包含HFile;memStore存储在内存中,StoreFile 存储在HDFS上

HBase架构及基本组件

1)Client:

  • 包含访问HBase的接口,并维护cache来加快对HBase的访问,比如region的位置信息。

2)Master

  • 为Region server分配region
  • 负责Region server的负载均衡
  • 发现失效的Region server并重新分配其上的region
  • 管理用户对table的增删改查操作

3)Region Server

  • Regionserver维护region,处理对这些region的IO请求
  • Regionserver负责切分在运行过程中变得过大的region

4)Zookeeper

  • 通过选举,保证任何时候,集群中只有一个Master,Master与Regionservers启动时会向ZooKeeper注册
  • 存储所有Region的寻址入口
  • 实时监控Region server的上线和下线信息,并实时通知给Master
  • 存储HBase的schema和table元数据
  • 默认情况下,HBase管理ZooKeeper实例,比如,启动或者停止ZooKeeper
  • ZooKeeper的引入是的Master不再是单点故障

HBase容错与恢复

每个 HRegionServer 中都有一个 HLog 对象,HLog 是一个实现 Write Ahead Log的类,在每次用户操作写入 MemStore 的同时,也会写一份数据到 HLog 文件中,HLog文件定期会滚动出新的,并删除旧的文件(已持久化到 StoreFile中的数据)。当HRegionServer意外终止后, HMaster会通过Zookeeper感知到, HMaster首先会处理遗留的 HLog 文件,将其中不同 Region 的Log 数据进行拆分,分别放到相应region的目录下,然后再将失效的region重新分配,领取到这些region的HRegionServer在 Load Region 的过程中,会发现有历史 HLog 需要处理,因此会 Replay HLog 中的数据到 MemStore中,然后 flush到StoreFiles,完成数据恢复

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章