Hadoop介绍(四)Hbase

来源:互联网 发布:知乎客户端 pc 编辑:程序博客网 时间:2024/06/05 17:25

Hbase
hbase-hadoop database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用hbase技术可在廉价pc上搭建起大规模的结构化存储集群

角色:
hmaster: 为regionserver分配region,负责regionserver的负载均衡,发现失效的regionserver并重新分配其上的region;管理用户对table的增删改查操作
hregionserver:维护region,处理对这些region的Io请求,负责切分在运行过程中变得过大的region

1、 hbase简介
a. hbase是apache hadoop中的一个子项目,依托于hdfs作为最基本存储单元,通过使用hadoop的dfs工具就可以看到这些数据存储文件夹的结构,还可以通过map/reduce的框架对hbase进行操作

b. hbase适用场景
b1. 大数据量存储,大数据量并发操作
b2. 需要对数据随机读写操作
b3. 读写访问均是非常简单的操作

c. hbase与hdfs对比
c1. 两者都具有良好的容错性和扩展性,都可以扩展到成百上千个节点
c2. hdfs适合批处理场景,但不支持数据随机查找,不适合增量数据处理,不支持数据更新

2、 数据模型
hbase以表的形式存储数据,表由行和列族组成。列划分为若干个列族(column family),几个关键概念:
1). 行键(rowkey): 行键是字节数组,任何字符串都可以作为行键,表中的行根据行键进行排序,数据按照rowkey的字节(byte order)排序存储,所有对表的访问都要通过行键(单个rowkey访问或rowkey范围访问或全表扫描)

2). 列族(column family): CF必须在表定义时给出,每个cf可以有一个或多个列成员(column qualifier),列成员不需要在表定义时给出,新的列成员可以随后按需、动态加入,数据按CF分开存储,hbase所谓的列式存储就是根据CF分开存储(每个CF对应一个store),这种设计非常适合于数据分析的情形

3). 时间戳(TimeStamp): 每个cell可能有多个版本,它们之间用时间戳区分

4). 单元格(cell):cell由行键,列族限定符,时间戳唯一决定,cell中的数据是没有类型的,全部以字节码形式存储

5). 区域(region): hbase自动把表水平(按row)划分成多个区域(region),每个region会保存一个表里面某段连接的数据;每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,region就会等分成两个新的region;当table中的行不断增多,就会有越来越多的region。这样一张完整的表就被保存在多个region上;region虽然是分布式存储的最小单元,但并不是存储的最小单元。region由一个或多个store组成,每个store保存一个column Family,每个store又由一个memstore和0至多个storefile组成,storefile包含hfile,memstore存储在内存中,storefile存储在hdfs上。

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

原创粉丝点击