欢迎投稿

今日深度:

Hbase的原理,

Hbase的原理,


一、HBase是针对谷歌BigTable的开源实现,是一个高可靠、高性能、面向列、可伸缩的分布式数据库,主要用来存储非结构化和半结构化的松散数据。HBase可以支持超大规模数据存储,它可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。
二、在Hadoop生态系统中的位置


三、Hbase与传统的数据库之间的主要区别有一下几个方面
(1)数据类型:关系型数据库采用的是关系模型,具有丰富的数据类型和存储方式,Hbase则采用了更加简单的数据模型,把数据存储为未经解释的字符串(byte[])
(2)数据操作:数据库中包含了丰富的操作,其中会设计复杂的多表连接。Hbase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除清空等,因为Hbase在设计上就避免了复杂的表与表的之间的关系
(3)存储模式:关系数据库是基于行模式存储的,HBase是基于列式存储的每个列族有几个文件保存,不同的列族的文件时分离的。
四、Hbase的组件
Hbase中的组件有Master 和regionServer
(1)Master负责管理和维护HBase表的分区信息,维护Region服务器列表,分配Region,负载均衡
(2)RegionServer负责存储和维护分配给自己的Region,处理来自客户端的读写请求
注意:
1、Master和Regionserver的关系和NameNode和DataNode的关系并不一样,NameNode中存储了元数据,读取数据时都需要经过NameNode,但是Hbase中读取数据并不直接经过Master,客户端并不依赖Master,是通过Zookeeper获取Region的位置信息,再去相应RegionServer上读取信息,这种方式使得Master的负载很小
2、因为在读取数据时并不是通过Master,所以即使Master 挂掉了,依然可以读取数据,Master可以对RegionServer进行维护,在这中情况下,可以通过Zookeeper来读取数据,但是如果此时再有RegionServer关掉了,是没有Master把挂掉的Regionserver中的Region分配出去的,数据就可能丢失

五、Hbase 中表的结构:
表名
行键(RowKey)
列族
根据行键+列族+列 可以定位一个Cell

Region:
当表的大小超过设置的值的时候,Hbase会自动的将表划分为不同的区域,每个区域包换所有行的一个子集,对用户来说,每个表是一堆数据的集合,考主键来区分,一张表被拆分了多个块,每个块就是一个Region,我们用表名+开始/结束 主键 来区分每个Region,一个Region会保存会保存一个表中的某段连续的数据,从开始主键到结束主键,一张完整的表时保存在多个region上面的。

读取数据:


在存储时,每个列族都有一个memstore, 当不断写入文件时,会先写到HLog【HLog在hdfs上,以防止当出现异常时,memstore内存中的数据丢失】中,然后写到memstrore(内存中),当内存中满了之后,会溢写到Hfile文件上,当Hfile文件个数达到阈值时,每一个region 会把相同列组上的 HFile文件进行合并,合并成一个大文件,最终有几个 列组就有几个HFile【在hdfs上】文件(对于每一个region来说 ),日志目录是WAL

www.htsjk.Com true http://www.htsjk.com/hbase/40201.html NewsArticle Hbase的原理, 一、HBase是针对谷歌BigTable的开源实现,是一个高可靠、高性能、面向列、可伸缩的分布式数据库,主要用来存储非结构化和半结构化的松散数据。HBase可以支持超大规模数...
相关文章
    暂无相关文章
评论暂时关闭