Hbase是什么东西

Hbase是大数据环境下的一个不遵行三大范式,基于Hadoop-HDFS分布式列存储数据的非关系数据库,有别与Hive,Hive只能说是一个数仓管理工具,也有别于redis,redis主要职责是为web端准备的一种提高效率的数据库,也可以用来做消息中间件,当然消息中间件还是kafka流行

Hbase的组成也很特别,库实例叫做命名空间,一个库中有n张数据表,它的每一张数据表在结构上又被分为多个列族,每个列族可以理解为三大范式要求的最小解耦后的数据表,同时每一个列族中的列在建立表时可以不指定,后期可以动态添加列,表中每条行数据有着行的唯一标识叫rowkey,最终每一个行的数据本质是存放在hdfs上
在这里插入图片描述

而hbase的物理数据最终的存放地在hdfs上,其本身的每个regionserver结点严格来说存放的其实是元数据以及承担与hdfs交互的角色,当然一般集群中Hbase和HDFS在同节点,可以将hbase看成是hdfs对外的一个特殊的数据接口,所以可以说是regionserver也保存着数据,同时hbase运行依赖于zookeeper协调各个节点的工作

说到这里有个误区百度上搜索Hbase的元数据存放地点得到的答案百分之九十九点九会告诉你在zookeeper上,估计这个答案不是源头错了,就是被网友抄作业抄错了,Hbase的元数据准确的说是存放在regionserver上的hbase:meta表里面,最开始的名字也叫hbase:.NAME.,这张表对我们使用hbase的shell界面是不可见的,所以读写数据,只是Client通过zookeeper访问到了regionserver中的meta表,而不是元数据直接存放在了zookeeper上

Hbase每个表以多个region分布式存储在不同的regionserver中,这里就是依赖了HDFS的块数据存储,这就是hbase分布式存储的方式,同时在regionserver中为了数据的存储,当某一个region过大是会进行切分为多个小region

在这里插入图片描述

每一个region中的行数据最终是存放在hdfs上的,但并不是直接按照region中行为单位直接一整行的存储,而是region将自己持有的行数据按照表的列族分成多个store,每一个store将行数据包装为多个storefile文件,这些文件才是在hdfs上存储的单位,一个storefile文件中有着行数据的详细信息,不止有值,还有如时间戳等
在这里插入图片描述
在这里插入图片描述
当Store在需要把数据写入文件的时候,也不是直接写的,在每个store中有memstore组件,它会将要写入的所有数据,基于内存进行一次字典正序排序,之后才会正式写入文件,而在后期多出了一个WAL预习日志,它是发生在memstore之前,为了特殊情况下弥补服务器发生意外数据丢失而存在,就是说存储数据来了之后,不再直接进memstore,而是先进WAL,进行暂存,此时regionserver先给客户端返回写入成功的信息,之后memstore从WAL中拉数据进行实际写入的操作。

而hbase引用在大数据,数据量很大为了数据相应速度,在每个regionserver中有着一个blockcache组件,就是一个缓存区,它基于内存存储当前的热点数据,但是它不是无限大的,为了保证它的正常,当某个数据长时间不用的时候会先关掉它

除了上面的提到的结点,我们还要知道hbase也有master结点,但是和其他的框架不一样,它不是用来存储元数据的,master在hbase中负责处理我们修改元数据的请求,如建表等,除此之外也用来协调其他结点的运作,如某个结点报废之后的结点协调等

同时我们要知道什么是cell,前面说了region会按照列族把数据切分为多个store,最终数据存储在storefile文件中,但是不可能说每一行单独一个storefile,所以一个storefile中存放了多行数据,而区分一行数据的承载者,其实就被称为cell,不过cell本身是一个逻辑概念,就是说cell是hbase存储数据的最小单元,但如果区分是否物理或逻辑,则最小的物理存储单位是storefile

整体上来说Hbase架构如下
在这里插入图片描述
在这里插入图片描述

最后给大家一个忠告,如果你要使用Hbase那么,请保证集群有大量的内存资源可以被调用,不会被热点占用,不然Hbase会奔溃的

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值