HBase简介

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

  • HBase是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用Chubby作为协同服务,HBase利用Zookeeper作为对应。

  • 海量存储
    Hbase适合存储PB级别的海量数据,在PB级别的数据以及采用廉价PC存储的情况下,能在十几到百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正是因为Hbase良好的扩展性,才为海量数据的存储提供了便利。

  • 列式存储
    列式存储其实就是列族存储,Hbase是根据列族来存储数据的,列族下面可以有非常多的列,列族在创建表的时候就必须指定。
    HBase知识全解

  • 极易扩展
    Hbase的扩展性主要体现在两个方面。一个是基于上层处理能力(RegionServer)的扩展,一个是基于存储的扩展(HDFS)。

    通过横向添加RegionServer的机器,进行水平扩展,提升Hbase上层的处理能力,提升Hbase服务更多Region的能力。HBase知识全解

  • 高并发
    由于大部分使用Hbase的架构,都采用廉价的PC,因此单个IO的延迟其实并不小,一般在几十到上百ms之间。这里说的高并发,主要在并发的情况下,Hbase的单个IO延迟下降并不多。能获得高并发,低延迟的服务。

为什么要使用HBase

  • 查询信息时会产生缓存,之后再次查询不需要再访问数据库
  • 缓存的数据如何更新:CUD操作,直接清除缓存,更新缓存(缓存工作于内存中)
  • Hbase是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库
  • 利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理Hbase中的海量数据,利用Zookeeper作为其分布式协同服务。

体系架构

HBase知识全解

  • Client

    • 包含访问Hbase的接口并维护cache来加快对Hbase的访问Zookeeper
    • 保证任何时候,集群中只有一个master
    • 贮存所有Region的寻址入口
    • 实时监控RegionServer的上线和下线信息,并实时通知Mster
    • 存储Hbase的schema和table元数据
  • Master ==namenode

    • 为RegionServer分配region
    • 负责RegionServer的负载均衡
    • 发现失效的RegionServer并重新分配其他的region
    • 管理用户对table的增删改操作
  • RegionServer==datanode

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

    • Hbase自动把表水平划分成多个区域(region),每个region会保存一个表里面某段连续的数据,每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阈值的时候,region就会等分为两个新的gerion(!!!裂变!!!)
    • 当table中的行不断增多,就会有越来越多的region,这样一张完整的表被保存在多个RegionServer
  • MemStore与StoreFile

    • 一个region由多个store组成,一个store对应一个CF(列族)
    • store包括位于内存中的MemStore和位于磁盘的StoreFile写操作
    • 当MemStore中的数据达到某个阈值,HregionServer会启动FlushCache进程写入StoreFile,每次写入形成单独的一个StoreFile(强制写道文件上;flush表名)
    • 当StoreFile文件的数量增长到一定阈值后,系统会进行合并(minor major compaction),在合并过程中会进行版本合并和删除工作(majar),形成更大的StoreFile
    • 当一个Region所有StoreFile的大小和数量超过一定阈值后,会把当前的Region分割为两个,并由Hmaster分配到相应的RegionServer服务器,实现负载均衡
    • 客户端检索数据,先在MemStore找,找不到再找StoreFile
  • HRegion是Hbase中分布式存储和负载均衡的最小单元,最小单元就表示不同的HRegion可以分布在不同的HRegionServer

  • HReion由一个或者多个Store组成,每个Store保存一个Columns Family

  • 每个Store又由一个MemStore和0至多个StoreFile组成

相关文章:

  • 2021-12-06
  • 2021-04-06
  • 2021-11-07
  • 2021-11-22
猜你喜欢
  • 2021-09-28
  • 2021-06-11
  • 2021-12-01
  • 2021-11-06
  • 2021-05-07
  • 2021-08-23
  • 2021-10-20
相关资源
相似解决方案