HBase

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

Google Bigtable 利用 GFS 作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;
Google 运行 MapReduce来处理 Bigtable 中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;
Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。

时间戳:对应每次数据操作的时间,可由系统自动生成,也可以用户显式赋值。

HBase两种版本回收方式:

  • 每个数据单元,只存储指定个数的最新版本。
  • 保存指定时间长度的版本(7天)。

元素由 行键、<列族>:<限定符>、时间戳 唯一决定。

元素以字节码形式存放,没有类型之分。

一个列族一个store,

稀疏设计:一行只有几个列族有值,而不是所有的列族都有值。

 

Region

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

Memregion StoreFile

  • 一个region由多个store组成,每个store包含一个列族的所有数据。
  • store包括位于内存的memstore和位于硬盘的store。
  • 写操作(HBase只有写操作,删操作不会去掉一行,而是标记删除。)先写入memstore,当memstore中的数据量达到某个阈值,HRegionServer 会启动flashcache进程写入storefile,每次写入形成单独一个storefile。
  • 当storefile文件的数量增长到一定的阈值,系统会自动合并,在合并的过程中会进行版本的合并和删除(去掉删除或过期的行)工作,形成更大的storefile。
  • 当storefile大小超过一定的阈值,会把当前的region分割为两个,并由HMaster分配到相应的regionserver,实现负载均衡。
  • 客户端检索数据时,先在memstore找,找不到再找storefile。

 

posted @ 2013-07-05 09:42  Kyle_Java  阅读(713)  评论(0编辑  收藏  举报