- Hbase:开源的非关系型分布式数据库
非关系型与关系型数据库区别:对事务的要求
数据库事务:指作为单个逻辑工作单元执行的一系列 要么完全地执行,要么完全地不执行。
事务正确执行的四个基本要素的缩写(ACID)。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。
非关系型数据库NoSQL(not only sql)对事务要求不严格,不遵循ACID原则。
- Hbase:基于Hadoop平台,意味着强扩展性和高吞吐量
- Hbase采用
Key/Value
存储方式。列式数据库可以分字段存储到不同集群上。所以数据少时查询不快,数据多时查询不慢。适用于当数据量大,并发量高,少用表关联时(基本的表关联在Hbase上需要较大的代码实现MapReduce过程) -
Hbase部署架构
Hbase部署架构(引用了Hbase不睡觉书)
一般一个HBase集群有一个Master服务器和几个RegionServer服务
器。 Master服务器负责维护表结构信息,主要操作一些需要跨regionServer服务器的协调工作例如建表,删表,移动region合并等。 实际的数据(以region(一段数据的集合)为单位)都存储在RegionServer服务器上。RegionServer保存的表数据直接存储在Hadoop的HDFS上。ZooKeeper在HBase中扮演的角色类似一个管家,ZooKeeper管理了HBase所有RegionServer的信息, 包括具体的数据段存放在哪个RegionServer上。
客户端每次与HBase连接, 其实都是先与ZooKeeper通信, 查询出哪个RegionServer需要连接。连接RegionServer服务器取出数据,因此当Master节点挂掉之后,仍然可以查询该集群中的数据,只是不能建立新表(Master管理表结构)
-
Hbase存储架构
Hbase存储架构(引用了Hbase不睡觉书)
最基本的存储单位是列( column) , 一个列或者多个列形成一行( row) 。每个行( row) 都拥有唯一的行键( row key) 来标定这个行的唯一性。 每个列都有多个版本, 多个版本的值存储在单元格( cell) 中。若干个列又可以被归类为一个列族。
- 列族 是建表时需要确定的信息,表的很多属性, 比如过期时间、 数据块缓存以及是否压缩等都是定义在列族上。Hbase会把相同列族的列尽量放在同一个机器上。
- 单元格:一个列上可以存储多个版本的值, 多个版本的值被存储在多个单元格里面, 多个版本之间用版本号(Version) 来区分。 所以, 唯一确定一条结果的表达式应该是行键:列族:列:版本号( rowkey:column family:column:version)
- 一个region是多个行按照行键字典排序后的集合。
网友评论