4.1概述
1.2HBase简介:
HBase是一个高可靠,高性能,面向列,可伸缩的分布式数据库,主要用来存储非结构化和半结构化的松散数据。Hbase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理超过10亿行数据和数百万列元素组成的数据表。
1.3Hbase与传统关系数据库的对比分析。
4.3HBase数据模型
3.2数据模型的相关概念
3.3数据坐标
四位坐标[行键,列族,列限定符,时间戳]
3.6面向列的存储
HBase采用DSM存储模型,DSM会对关系进行垂直分解,并为每个属性分配一个子关系。因此,一个具有n个属性的关系会被分解为n个子关系,每个子关系单独存储,每个子关系只有当前相应的属性被请求时,才会被访问。
DSM是以关系数据库中的属性或列为单位进行存储的,关系中多个元组的同一属性值会被存储在一起,而一个元组中的不同属性值通常会被存放在不同的磁盘页中。
HBase是以列族为单位进行分解,而不是每个列都不单独存储。
4.4
4.1HBase的功能组件
库函数,链接到每个客户端;一个Master主服务器;许多个Redion服务器
Master主服务器负责管理和维护HBase的分区信息。例如一个表被分成了哪些region,每个region被存放在哪个region服务器上。
Region服务器负责存储和维护分配给自己的Region,处理来自客户端的请求。
4.2表和Region
表中的行数很大,不能存储到一台机器上,需要根据行键的值对表进行分区,每个行区间构成一个分区,被称为"Region"。
Region是负载均衡和数据分发的基本单位。
这些Region被分发到不同的Region服务器上
初始时,每个表只包含一个Region,随着数据不断涌入,Region持续增大,当一个Region的行数达到一个阙值时,就会自动分成两个新的Region。
4.3Region的定位
一个Region标识符可以表示为"表明+开始主键+RegionID"
映射表包括"Region标识符+Region服务器标识"
映射表包含了关于Region 的元数据(即Region和Region服务器之间的对应关系),被称为"元数据表(.META表)"
元数据表也可能很大,一个服务器装不下,也需要分区存储到不同的服务器上,因此元数据表也被分成多个Region。
为了定位这些Region,在构建一个新的映射表,这个表就是"根数据表(-ROOT-表)"(根数据表不能再分割,永远只存在一个Region存放根数据表,因此这个用来存放-ROOT-表的唯一Region,他的名字被程序写死了,Master永远知道它的位置)。
客户端访问用户数据之前,首先访问Zookeeper,获取—ROOT—表的位置信息,然后访问—ROOT—表,获取.META.表的信息,接着访问.META.表找到所需的Region具体位置位于哪个Region服务器,最后才会到该服务器读取数据。
4.5运行机制
5.1HBase系统架构
客户端,Zookeeper服务器,Master主服务器,Region服务器。HBase一般采用HDFS作为底层数据存储。
客户端
客户端包含访问HBase的接口,同时在缓存中维护着已经访问过的Region位置信息,用来加快后续数据的访问。
对于管理类的操作,客户端与Master进行RPC,对于数据的读写类操作,客户端与Region服务器进行RPC。
Zookeeper服务器
在HBase服务器集群中,包含一个Master和多个Region服务器,Master就是这个集群的总管,他必须知道Region服务器的状态。
每个Region服务器必须到Zookeeper中进行注册,Zookeeper会实时监控每个Region服务器的状态,并通知Master。
Zookeeper还会从多个Master服务器中选取一个作为主管。
Zookeeper中保存—ROOT—表的地址和Master的地址
Master
主要负责表和Region的管理工作。
管理用户对表的增加,删除,修改,查询。
实现不同Region服务器之间的负载均衡。
在Region分裂或合并后,负责重新调整Region的分布。
对发生故障失效的Region服务器上的Region进行迁移。
Region服务器
Region服务器时HBase中最核心的模块,负责维护分配给自己的Region,并相应用户的读写请求。
Region一般采用HDFS作为底层存储文件系统。
4.6HBase编程实践
6.1常用的Shell命令
create:创建表
create '表名','列族名1','列族名2','列族名3'
put:向表,行,列指定的单元格添加数据
put '表名','行','列','要添加的值',时间戳
get:通过指定表名,行,列获得相应的单元格的值
get '表名','行','列1','列2'
scan:浏览表信息
scan '表名'
delete:删除指定单元格数据
delete '表名','行','列',时间戳