hbase---- 理论部分
Posted BingGooo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hbase---- 理论部分相关的知识,希望对你有一定的参考价值。
特点
HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java。
是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,因此可以容错地存
海储量稀疏的数据(记录可以为空值)
特性:
– 高可靠
– 高并发读写
– 面向列
– 可伸缩
– 易构建
行储存 列存储对比
行存储
优点:一次性写入,保持了数据的完整性
缺点:读取数据时产生冗余数据(也就是说在读取数据时是整行读取,只是在 数据时进行了过滤操作)
列储存
优点:在读取过程中不会产生数据冗余,因为每一列是以单独的文件形式储存的,读取数据时不需要读取其他列数据,特别适合对数据完整性要求不高的大数据领域
缺点:写入效率差,保证数据完整性方面差,不能保证数据的完整性。
hbase优势
海量数据存储:数据大部分存储及在hdfs上,具有hdfs的特性,高吞吐。
快速随机访问:hdfs不支持,hbase解决掉这个问题
大量写操作的应用:在hdfs中,不支持随机读写,只支持在后面以append的形式追加数据,但hbase支持随机读写。
hbase应用场景
• 互联网搜索引擎数据存储
• 海量数据写入
• 消息中心
• 内容服务系统(schema-free)
• 大表复杂&多维度索引
• 大批量数据读取
hbase数据模型
补充:
rowkey:也就是主键,在是有序的,这样设计的目的是加快查询速度,原理类似于二分查找。
column family:列簇,可以理解成多个相关列的统一命名,下面还包含有多个相关列。
column:属于某一个column family,可以动态的添加,如:familyname:columnname ,当某一个记录更改时,不会覆盖掉原来的记录值,会另外生成一条修改后的记录,并且添加相应的时间戳,区分不同的版本。
virsion number: 默认的系统时间戳,以维护不同版本的数据,可以由用户自定义。
当要查询数据时,需要指定三个条件,rowkey,(column family,column qualifier),以及时间戳,去获取值value.
hbase物理模型
hbase表是由一个或多个hregion组成,各个region按rowkey划分,各个区域内的rowkey是有序的。
region的划分是可以通过参数指定的,每个region最多可以储存10G的数据。
region是逻辑概念,region由regionserver进行管理,每一个Region只能存储在一个regionserver上,一个regionserver可以管理多个region。
regionserver主要是提供一个IO请求服务,使用户可以通过客户端实现对HDFS上的数据进行读写操作。
regionserver实际上就是一个节点,在该节点上运行有HRegionServer这样一个进程,实现对regionserver上多个region的管理。
先按rowkey将数据分为region,然后在不同的region里可以根据不同的column family再对每个region进行划分为不同的Hstore,
Hstore可以分为memtore(内存区,默认128M,当内存区数据在于该值时,开始往磁盘溢写,生成HFile),Hfile(真正写入磁盘的数据,均为有序的k,v键值对)
hregion虽然是分布式储存的的最小单元,但踏着并不是存储的最小单元(因为hreion还可以分为hstore)
写数据时,数据先写入memstor,当达到溢写阈值时开始往磁盘上写数据,生成不同的hfile.
hbase的系统架构
补充:
client:访问接口,cache缓存可以将一定的数据写入换成区,加快对regionserver的访问。
hmaster(主):类似于hdfs的namenode.,对数据进行管理。
ACL权限控制
表格的增删改操作
region server(从):类似于hdfs的datanode,管理和存放本地的region
数据的本地化
hbase容错
当regionserver挂掉以后,可以通过WAL预写日志实现对数据的迁移。
Hbase的操作
补充:
put:写数据
get:读数据
delete:删除数据
均是对单条记录进行操作,
scan:同时读取多条数据记录,如果表较大时,慎用。
hbase特殊的表
meta表中记录了region存放在regionserver上的元数据信息。
hbase写入数据流程
hbase读取数据流程
hbase数据合并和拆分
总结
本小结主要对hbase以下几点进行了学习:
存储的特性
应用背景
数据模型
系统架构
系统容错
数据读,写操作的具体流程
以上是关于hbase---- 理论部分的主要内容,如果未能解决你的问题,请参考以下文章