1.Hbase定义
HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现
的编程语言为 Java。
是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,因此可以容错地存
储海量稀疏的数据。
2.特性
1.高可靠
2.高并发读写
3.面向列
4.可伸缩
5.易构建
3.行存储 v s 列存储
行存储
优点:写入一次性完成,保持数据完整性
缺点:数据读取过程中产生冗余数据,若有少量数据可以忽略
列存储
优点:读取过程,不会产生冗余数据,特别适合对数据完整性要求不高的大数据领域
缺点:写入效率差,保证数据完整性方面差
4.Hbase优势
海量数据存储
快速随机访问
大量写操作的应用
5.Hbase应用场景
互联网搜索引擎数据存储
海量数据写入
消息中心
内容服务系统(schema-free)
大表复杂&多维度索引
大批量数据读取
6.Hbase数据模型
例1:
RowKey:是Byte array(以字节的方式存储,前后之间是按照顺序存储的,可以通过二分法检索),是表中每条记录的“主键”,方便快速查找, Rowkey的设计非常重要。
Column Family:列族,拥有一个名称(string),包含一个或者多个相关列
Column:属于某一个columnfamily, familyName:columnName,每条记录可动态添加
Version Number:类型为Long,默认值是系统时间戳,可由用户自定义
Value(Cell): Byte array
例2:
为了检索快速,体现了一个三维有序的特点:
三维:1.rowkey 2.列族 3.version
举例:
{rowkey => {family => {qualifier => {version => value}}}}
a:cf1:bar:1368394583:7
a:cf1:foo:1368394261:hello
一维:a
二维:cf1:bar和cf1:foo
三维:1368394583和1368394261
前两维按顺序排列,时间戳按倒序排列
上表在传统数据库的形式如下:
7.Hbase物理模型
1.Hbase一张表由一个或多个Hregion(分区或区域)组成
2.记录之间按照Row Key的字典序排列
region举例:
3.Region特点:
1)Region是Hbase中分布式存储和负载均衡的最小单元,最小单元就表示不同的Hregion可以分布在不同的
HRegion server上。
2)Region按大小分割的,每个表一开始只有一个region,随着数据不断插入表, region不断增大,当增大到一个阀值(默认10G)的时候, Hregion就会等分会两个新的Hregion。当table中的行不断增多,就会有越来越多Hregion。
3).同一张表的两个不同的Region可能在同一台机器上,也可能在不同的机器上,如下图:
3.regionserver:
region所在的那台机器,这个机器就是regionserver,机器上的进程就是HRegionServer
regionserver的作用:
主要负责用户的io请求(读和写),regionserver提供一个入口,供客户端来对hdfs的一个交互
进程
HRegionServer的作用:HRegionServer内部管理了一系列Hregion对象
4.Hbase物理模型
(1)Hbase里的一张表叫Htable
(2)按RowKey范围分的Region-> HRegion ->Region Servers
(3)HRegion按列族(Column Family) ->多个HStore(一个Column Family就被分为一个HStore(文件))
(4)HStore -> memstore(默认128M) + HFiles(均为有序的KV)
(5)HFiles -> HDFS
一个HRegion结构如下图:
HRegionServer上的HRegion存储结构如下图:
8.Hbase系统架构
1.Client:访问Hbase的接口,并维护Cache加速Region Server的访问
2.HMaster(主):
1.负载均衡,分配Region到RegionServer
2.DDL:增删改-->table,cf,namespace
3.类似于namenode,管理一些table元数据
4.ACL权限控制
功能:
3.HRegionServer(从):
1.管理和存放本地的HRegion
2.读写HDFS,提供IO操作
3.本地化:HRegion的数据尽量和数据所属的DataNode在一块。但是这个本地化不能够总满足和实现
4.Zookeeper:
保证集群中只有一个Master
存储所有Region的入口(ROOT)地址
实时监控Region Server的上下线信息,并通知Master
系统架构图:
9.Hbase的容错
1.Master容错:
Zookeeper重新选择一个新的Master
无Master过程中,数据读取仍照常进行;
无master过程中, region切分、负载均衡等无法进行
2.Region Server容错:
定时向Zookeeper汇报心跳,如果一旦时间内未出现心跳, Master将该RegionServer上的
Region重新分配到其他RegionServer上,失效服务器上“预写”日志由主服务器进行分割
并派送给新的RegionServer
3.Zookeeper容错:
Zookeeper是一个可靠地服务,一般配置3或5个Zookeeper实例
网友评论