hbase知识总结

Posted 大数据的那些事

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hbase知识总结相关的知识,希望对你有一定的参考价值。

    为了解决数据量越来越大所带来的问题,谷歌在十几年前发表了几篇论文,这几篇文章可以认为是大数据领域的基石,从此大数据行业与技术得到了快速的发展。其中有一篇是关于BigTable,这是一个分布式的存储系统。但是谷歌并没有将BigTable开源出来,本文要讲的Hbase参考了BigTable的建模,并用java将其实现。

         HBase是一个运行于HDFS文件系统之上的非关系型(NoSQL)分布式数据库,可以容错地存储海量稀疏的key/value数据。

一、Hbase的特点有:

1)  存储量大:一张表可以存储十亿行,上百万列;

2)  无模式:每行都有一个可排序的主键和任意多的列,列可以动态添加,同一个表中不同的行可以有不同的列。

3)  面向列:数据是以列(或列簇)为单位进行存储。

4)  稀疏:空列不占用存储空间,表可以做得很稀疏。

5)  数据版本多:每个单元中的数据可以由多个版本,默认是数据插入时的时间戳。

6)  数据类型单一:数据都是字符串。

7)  可扩展性高:与hadoop类似,Hbase主要通过横向扩展,不断增加廉价服务器来增加存储能力。

二、行存储vs列存储

行存储:
优点:写入一次性完成,保持数据完整性
缺点:数据读取过程中产生冗余数据,若有少量数据可以忽略
列存储
优点:读取过程,不会产生冗余数据,特别适合对数据完整性要求不高的大数据领域
缺点:写入效率差,保证数据完整性方面差。

三、Hbase

Hmaster

1)  负责HregionServer的负载均衡,

2)  HregionServer分配region

3)  对失效的HregionServer,对其上的region迁移

4)  region分裂以及分裂后的region分配

5)负责表的增删改查

6)注意:client访问hbase上的数据并不需要master参与,寻址访问zookeeperregionserver,数据读写访问region server

Zookeeper

2)避免Master 单点故障

3)管理HMasterHRegionServer的状态(available/alive)

HregionServer

1)维护master分配过来的region,处理对这些regionio请求

2)切分待分裂的region

3RegionServer要求和HDFSData Node一起部署

4Zookeeper 负责 Region RegionServer 的注册。

四、Hbase集群架构

hbase知识总结

Client通过RPCHMaster进行管理类通信,与HRegion Server进行数据操作类通信。HregionServer中管理了很多HRegion,每个HRegion由多个Store组成。每个Store对应一个Column FamilyStoreHBase的存储核心。每个Store包含一个MemStore0到多个StoreFile

MemStore是一个有序的内存缓存区,用户写入的数据首先放入MemStore,当MemStore满了以后Flush成一个StoreFile,当StoreFile数量达到一定的阈值,触发合并,将多个StoreFiles合并成一个。当Region内所有StoreFilesHfile)的总大小超过一个阈值时会触发Split,把当前的Region 分裂成2Region,这两个Region会被HMaster分配到合适HRegionServer上。

五、HBaseHive 的区别

Hive:对一段时间内的数据进行分析查询,不支持实时查询,支持sql,要经过mapreduce过程。

Hbase:适用于实时查询,需要用到zookeeper,只提供了Java API 接口,不支持sql

HBase Hive的存储都是基于hdfs

六、两张特殊的表,-ROOT-和.META.

HBase中有两张特殊的Table,-ROOT-和.META.

1).META.:记录了用户表的Region信息,.META.可以有多个regoin。

2)-ROOT-:记录了.META.表的Region信息,-ROOT-只有一个region。

RowKey:表中每条记录的“主键”,可排序,方便快速查找,Rowkey设计非常重要。Column Family:列族,拥有一个名称(string),包含一个或者多个相关列。

Column:属于某一个列族,列可动态添加。

Version Number:默认值为时间戳,可自定义。

Value(Cell):每个单元的多个版本的数据按时间倒叙存储

Hbase的每一行记录都有可排序的关键字(RowKey)和任意列项(Column &Column Family)。所有数据按照逐渐排序后存储,只可以通过主键和主键版本号来检索数据,仅支持单行事务。

八、tableregionstoreStoreFileHfile的对应关系

         一个table可能会切分成多个Region,每个Region对应于HregionServer上的一个Hregion对象,HregionServer内部管理着多个Hregion对象。Hregion由多个Store组成,每个Store对应Table中的一个Column Family,准确的说应该是一个regionCF。每个Store包含一个MemStore0到多个StoreFile

    每个Hregion Server中有一个预写日志文件(WriteAhead Log),为该server中的所有Region所共有。在数据写入时,首先写入预写日志,然后才会写入数据,数据也不是一开始就直接写入HDFS,而是会等缓存到一定数量再批量写入,写入完成后在日志中做一个标记。MemStore是一个有序的内存缓存区,写入的数据首先存入MemStore,当MemStore满了以后Flush成一个StoreFile文件,当这个文件数达到一个阈值时会触发Compact操作,将多个StoreFiles合并成一个StoreFile,当一个Hregion中所有StoreFilesHfile)的总大小超过某个阈值时会触发Split操作将一个Region分成两个。


以上是关于hbase知识总结的主要内容,如果未能解决你的问题,请参考以下文章

Hbase--知识点总结3

HBase核心知识点总结

hbase知识总结

Hbase框架原理及相关的知识点理解Hbase访问MapReduceHbase访问Java APIHbase shell及Hbase性能优化总结

记录一次 Hbase 线上问题的分析和解决,并分析总结下背后的知识点 - KeyValue size too large...

记录一次 Hbase 线上问题的分析和解决,并分析总结下背后的知识点 - KeyValue size too large...