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: 默认的系统时间戳,以维护不同版本的数据,可以由用户自定义。



hbase---- 理论部分

当要查询数据时,需要指定三个条件,rowkey,(column family,column qualifier),以及时间戳,去获取值value.



hbase物理模型




hbase---- 理论部分

hbase表是由一个或多个hregion组成,各个region按rowkey划分,各个区域内的rowkey是有序的。


region的划分是可以通过参数指定的,每个region最多可以储存10G的数据。


hbase---- 理论部分


hbase---- 理论部分

region是逻辑概念,region由regionserver进行管理,每一个Region只能存储在一个regionserver上,一个regionserver可以管理多个region。


regionserver主要是提供一个IO请求服务,使用户可以通过客户端实现对HDFS上的数据进行读写操作。


regionserver实际上就是一个节点,在该节点上运行有HRegionServer这样一个进程,实现对regionserver上多个region的管理。


hbase---- 理论部分

先按rowkey将数据分为region,然后在不同的region里可以根据不同的column family再对每个region进行划分为不同的Hstore,


Hstore可以分为memtore(内存区,默认128M,当内存区数据在于该值时,开始往磁盘溢写,生成HFile),Hfile(真正写入磁盘的数据,均为有序的k,v键值对)


hbase---- 理论部分

hregion虽然是分布式储存的的最小单元,但踏着并不是存储的最小单元(因为hreion还可以分为hstore)


hbase---- 理论部分

写数据时,数据先写入memstor,当达到溢写阈值时开始往磁盘上写数据,生成不同的hfile.


hbase---- 理论部分



hbase的系统架构



hbase---- 理论部分

补充:

client:访问接口,cache缓存可以将一定的数据写入换成区,加快对regionserver的访问。


hmaster(主):类似于hdfs的namenode.,对数据进行管理。

ACL权限控制

表格的增删改操作


region server(从):类似于hdfs的datanode,管理和存放本地的region

数据的本地化




hbase容错



hbase---- 理论部分


hbase---- 理论部分


hbase---- 理论部分


hbase---- 理论部分


hbase---- 理论部分

当regionserver挂掉以后,可以通过WAL预写日志实现对数据的迁移。



Hbase的操作



hbase---- 理论部分

补充:

put:写数据

get:读数据

delete:删除数据

均是对单条记录进行操作,

scan:同时读取多条数据记录,如果表较大时,慎用。



hbase特殊的表



hbase---- 理论部分

meta表中记录了region存放在regionserver上的元数据信息。


hbase---- 理论部分



hbase写入数据流程



hbase---- 理论部分


hbase---- 理论部分


hbase---- 理论部分



hbase---- 理论部分


hbase---- 理论部分



hbase读取数据流程



hbase---- 理论部分



hbase数据合并和拆分



hbase---- 理论部分





总结



本小结主要对hbase以下几点进行了学习:

存储的特性

应用背景

数据模型

系统架构

系统容错

数据读,写操作的具体流程


以上是关于hbase---- 理论部分的主要内容,如果未能解决你的问题,请参考以下文章

大数据学习--之--HBASE理论基础

Hbase理论-数据模型

第7期深入HBase内核,剖析HBase数据库的基础理论与开发运维

hbasehbase理论学习

Hbase细节概要

陈德基谈工业互联网:Hadoop和HBase