HBase入门

一、Hbase是什么

HBase是一种构建在HDFS之上的分布式、面向列的存储系统。在需要实时读写、随机访问超大规模数据集时,可以使用HBase。

HDFS和HBase有啥区别阿

可以把HBase当做是MySQL,把HDFS当做是硬盘。HBase只是一个NoSQL数据库,把数据存在HDFS上。HBase在HDFS之上提供了高并发的随机写和支持实时查询,这是HDFS不具备的。

HBase的特点
大:一个表可以有上亿行,上百万列。
面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。
稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。
数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。
数据类型单一:HBase中的数据都是字符串,没有类型。

二、入门

「列式存储」

MySQL存储的结构:

 转换成所谓的列式存储:

  HBase的数据模型:

  • 一行数据由一个行键一个或多个相关的列以及它的值所组成。

在HBase里边,定位一行数据会有一个唯一的值,这个叫做行键(RowKey)。

HBase的列(Column)都得归属到列族(Column Family)中。在HBase中用列修饰符(Column Qualifier)来标识每个列。先有列族,后有列

什么是列族?可简单理解为:列的属性类别

什么是列修饰符?先有列族后有列,在列族下用列修饰符来标识一列

 

 HBase表的每一行中,列的组成都是灵活的,行与行之间的列不需要相同。如图下:

 

 

数据写到HBase的时候都会被记录一个时间戳,这个时间戳被我们当做一个版本

 

三、HBase的架构图: 

 

 

1、Client客户端,它提供了访问HBase的接口,并且维护了对应的cache来加速HBase的访问。

2、Zookeeper存储HBase的元数据(meta表),无论是读还是写数据,都是去Zookeeper里边拿到meta元数据告诉给客户端去哪台机器读写数据

3、HRegionServer它是处理客户端的读写请求,负责与HDFS底层交互,是真正干活的节点。

总结大致的流程就是:client请求到Zookeeper,然后Zookeeper返回HRegionServer地址给client,client得到Zookeeper返回的地址去请求HRegionServer,HRegionServer读写数据后返回给client。

  HRegionServer内部:

 HBase一张表的数据会分到多台机器上的。那HBase是怎么切割一张表的数据的呢?用的就是RowKey来切分,其实就是表的横向切割。

说白了就是一个HRegion上,存储HBase表的一部分数据。

 一个列族的数据是存储在一起的,所以一个列族的数据是存储在一个Store里边的。

 Store里边有啥?有Mem Store、Store File、HFile,我们再来看看里边都代表啥含义。

HBase在写数据的时候,会先写到Mem Store,当MemStore超过一定阈值,就会将内存中的数据刷写到硬盘上,形成StoreFile,而StoreFile底层是以HFile的格式保存,HFile是HBase中KeyValue数据的存储格式。

所以说:Mem Store我们可以理解为内存 buffer,HFile是HBase实际存储的数据格式,而StoreFile只是HBase里的一个名字。

HLog

我们写数据的时候是先写到内存的,为了防止机器宕机,内存的数据没刷到磁盘中就挂了。我们在写Mem store的时候还会写一份HLog。 

这个HLog是顺序写到磁盘的,所以速度还是挺快的(是不是有似曾相似的感觉)...

HMaster 

HMaster会处理 HRegion 的分配或转移。如果我们HRegion的数据量太大的话,HMaster会对拆分后的Region重新分配RegionServer。(如果发现失效的HRegion,也会将失效的HRegion分配到正常的HRegionServer中)

HMaster会处理元数据的变更和监控RegionServer的状态。

总结

  • HRegionServer是真正干活的机器(用于与hdfs交互),我们HBase表用RowKey来横向切分表
  • HRegion里边会有多个Store,每个Store其实就是一个列族的数据(所以我们可以说HBase是基于列族存储的)
  • Store里边有Men Store和StoreFile(HFile),其实就是先走一层内存,然后再刷到磁盘的结构

 四、理解

原始社会,由若干血缘相近的宗族、氏族结合起来集体生活,这就是部落。最高首领就是酋长,此外还可能会有军事首领,他们一起繁衍生息。

 Hbase的设计目标就是海量存储能力,是一个集群。它的“酋长”就称为Master节点,剩余的每个节点就称为Region Server。

自己的“军师”,它就是ZooKeeper。ZooKeeper本身也是一个集群。

酋长需要具有很强的能力,不是谁都能当的。所以平时需要一个后备酋长时时刻刻候着,以防不测。其实就是个备胎。

所以Hbase中正常的那个Master节点称为Active Master节点,至少还有一个后备的Master节点称为Backup Master节点。这两个Master节点之间经常互通有无,保持信息一致

 

 

 

 

 

 参考:

https://blog.csdn.net/u010270403/article/details/51648462 N

我终于看懂了HBase,太不容易了... - 知乎

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值