HBase基础知识

一、HBase简介

  HBase是Google BigTable的开源实现,并建立在Hadoop HDFS之上的数据库系统,能够对大型数据提供随机、实时的读写访问。HBase的目标是存储并处理大型的数据。HBase是一个开源的,分布式的,多版本的,面向列的存储模型,它存储的是松散型数据。

1.1、HBase与Google BigTable

 

BigTable

HBase

文件存储系统

GFS

Hadoop HDFS

海量数据处理

MapReduce

Hadoop MapReduce

协同服务管理

Chubby

Zookeeper

1.2、HBase特性

  • 高可靠性
  • 高效性
  • 面向列
  • 可伸缩
  • 可在廉价PC Server搭建大规模结构化存储集群

1.3、HBase 数据表的特点

  • 大:一个表可以有上亿行、上百列(列多时,插入变慢)
  • 面向列:面向列族的存储和权限控制,列族独立检索
  • 稀疏:对于为空的列,并不占用存储空间,因此,表可以设计的非常稀疏
  • 每个Cell中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳
  • HBase表中的数据都是字符串,没有类型
  • 强一致性:同一行数据的读写只在同一台Region Server上进行
  • 水平伸缩:Region的自动分裂以及Master的Balance;只用增加DataNode机器即可增加容量;只用增加Region Server机器即可增加读写吞吐量。
  • 行事务:同一行的列的写入时原子的
  • Column Oriented+三维有序

     SortedMap(RowKey,ListSortedMap(Column,List(Value,TimeStamp))))

     RowKey(ASC)+ColumnLabel(ASC)+Version(DESC)->Value

  • 高性能随机写:WAL(Write Ahead Log)

 

二、HBase体系结构

 

 2.1、结构说明

Client

  • 使用HBase RPC机制与HMaster和HRegionServer进行通信
  • Client与HMaster进行通信进行管理类操作
  • Client与HRegionServer进行数据读写类操作

Zookeeper

  • Zookeeper Quorum存储-ROOT-表地址、HMaster地址
  • HRegionServer把自己以Ephedral方式注册到Zookeeper中,HMaster随时感知各个HRegionServer的健康状况
  • Zookeeper避免HMaster单点问题

HMaster

HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master在运行。

主要负责Table和Region的管理工作:

  • 管理用户对表的增删改查操作
  • 管理HRegionServer的负载均衡,调整Region分布
  • Region Split后,负责新Region的分布
  • 在HRegionServer停机后,负责失效HRegionServer上Region迁移

HRegionServer

HBase中最核心的模块,主要负责响应用户I/O请求,向HDFS文件系统中读写数据。

HRegionServer管理一些列HRegion对象

  • 每个HRegion对应Table中一个Region,HRegion由多个HStore组成;
  • 每个HStore对应Table中一个Column Family的存储;
  • Column Family就是一个集中的存储单元,故将具有相同IO特性的Column放在一个Column Family会更高效

HStore

HBase存储的核心。由MemStore和StoreFile组成。MemStore是Sorted Memory Buffer。

用户写入数据的流程:

 

1)  Client写入数据存入MemStore;

2)  MemStore满之后,进行Flush操作生成一个StoreFile;

3)  StoreFile增长到一定阀值(64M),触发Compact合并操作(进行版本合并和数据删除),将多个(小)StoreFile合并成一个(大)StoreFile;

4)  单个StoreFile大小超过一定阈值(2G),触发Split操作,将当前Region Split成2个Region,(Old)Region会下线,新Split出的2个孩子Region会被HMaster分配到相应的HRegionServer上,使得原先1个Region的压力得以分流到2个Region上。

由此过程可知,HBase只是增加数据,有所得更新和删除操作,都是在Compact阶段做的,所以,用户写操作只需要进入到内存即可立即返回,从而保证I/O高性能。

HLog

1) 引入HLog原因

在分布式系统环境中,无法避免系统出错或者宕机,一旦HRegionServer以外退出,MemStore中的内存数据就会丢失,引入HLog就是防止这种情况。

2) HLog的工作机制

每个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,完成数据恢复。

 

posted on 2014-04-20 22:34  Leoin Lee  阅读(287)  评论(0)    收藏  举报

导航