hbase简单介绍

来源:互联网 发布:淘宝网页怎么发链接 编辑:程序博客网 时间:2024/06/06 14:15

hbase简单介绍

一、 概念

hbase是高可靠、面向列的、可伸缩的、分布式的数据库,适用于非结构化的数据存储数据库;

运行在hadoop之上,受zookeeper管理。

 

二、数据模型

 

Row Key

Timestamp

Column Family


  

URI

Parser


  


  

r1

t3

url=http://

title=

t2

host=com


  


  

t1


  


  


  

r2

t5

url=http://

content=每天

t4

host=com


  


  

 

Row key:行键,Table的主键,Table中的记录默认按照Row Key的字典序升序排序

最大不超过64k,一般越短越好。

 

Timestamp:时间戳,每次数据操作对应的时间戳,可以看作是数据的version number;

 

Column Family:列簇,Table在水平方向有一个或者多个Column Family组成,一个Column Family中可以由任意多个Column组成,即Column Family支持动态扩展,无需预先定义Column的数量以及类型,所有Column均以二进制格式存储,用户需要自行进行类型转换。

但是,目前hbase对列簇超过2-3列支持不是太好,所以设计中最多不超过3列。列簇越少越好,设计表时预习设计好一个列簇。

 

 RegionTable随着记录数不断增加而变大后,会逐渐分裂成多份splits,成为regions,一个region[startkey,endkey)表示,不同的region会被Master分配给相应RegionServer进行管理Region相当于文件系统中划分的block块。

 

三、系统架构


 

Client:客户端与HMaster通信负责管理hbase的regionServer服务运行、数据迁移、资源划分。直接与regionServer通信负责数据的读写。

HRegionServer:主要负责响应用户I/O请求,向HDFS文件系统中读写数据region运行的服务器;内部管理了一系列HRegion对象

HRegion:对应table中的一个region,一个table可以拆分为多个region.

HStore:包含两个部分,一个是MemStore,读写数据的内存缓冲区,当MemStore满值后会将内容向storeFile写入。storeFile基于HFile实现,是hdfs的二进制存储文件。当storeFile到了一定的阈值后会触发文件的合并。合并的过程中对列的版本数据进行合并和更新,合并包括大文件合并和小文件合并,控制好合并的minormajor阈值对性能提升很重要。当storefile合并大小到达一定阈值会触发splitregion拆分。Hlog文件是在向MemStore写文件的同时要写入,避免宕机情况出现导致memstore中的数据丢失。

四、Mapreduce支持

 

 

Mepreduce不仅支持从hdfs中读写数据,还支持向hbase中读写数据。Mapreducehbase读写数据时Map端业务逻辑类不再继承Mapper,而是继承TableMapperreduce端继承TableReduce;相关Job类中mapperreduce的设置方式也有改变。

 

Map端从hbasetable中的各个region读数据,根据不同的key将读取的数据划分到各个分组中,然后分组数据向reduce端混排合并,合并后相同的key交给同一个reduce处理,然后将处理结果输出到hbase而不是hdfs中。

 

 

 

原创粉丝点击