大数据【粮仓】分布式列式数据库:Hbase原理、结构

HBase的基本架构

一、HBASE架构及其基本组件图解

先上大图:后面说明
在这里插入图片描述

二、主要组件:

RowKey:是一个字节数组(byte array),是表中每条记录的‘主键’,方便快熟查找

rowkey的设计原理:

1、长度原理:

  • a. rowkey是一个二进制码流,可以是任意字符串,最大长度为64kb,一般为10-100byte的字节数组,一般设计为定长、建议越短越好:不要超过16个字节(1、占用存储空间,极大影响HFile的存储效率;
  • b. memStore会缓存部分数据到内存中,若rowKey过长,内存的有效利用率就会降低,降低检索效率;
  • c. 目前大多数系统是64为的,8字节的整数倍可以发挥系统的最佳特性)

2、唯一原则:若是同一rowkey,在插入相同的rowkey的数据时,原先存放的数据会被覆盖
3、排序原则:RowKey是按照ASCII有序排列的,设计时应该充分利用这一特性
4、散列原则:设计的rowKey应该均匀的分布在各个Hbase节点上

Column Family:列族,一个拥有名称(string),包含一个或者多个相关列
Column(列):属于某一个列族,familyName:columnName,每条记录可动态添加
Version Number:类型为Long,默认值是系统时间戳,可由用户自定义
Value(Cell):Byte array

三、物理模型:

  • 每个column family存储在HDFS上的一个单独文件中,空值不会被保存。
  • key和version number在每个列族中均有一份;
  • Hbse为每个值维护了多级索引,即:<key,column family,column name,timestamp>
    如图:
    在这里插入图片描述

四、物理存储:

① Table中所有行都按照rowkey的字典需排列;
② Table在行的方向上分割为多个Region;
③ Region按大小分割,每个表开始只有一个region,随着数据增多,region不断增大,达到某个阈值时,region就会等分为两个新的region,之后会有越来越多的region;
④ Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同的RegionServer上
在这里插入图片描述

⑤ Region虽然是分布式存储的最小单元,但不是存储的最小单元,Region由一个或者多个Store组成,每个store保存着一个列族(column family);每个Store又由一个memStore和0到多个StoreFile组成,StoreFile包含HFile;memStore存储在内存中,StoreFile存储在HDFS上;

在这里插入图片描述

五、Hbase 读写原理

Hbase的读流程:

读流程图解

在这里插入图片描述

过程:

1、client访问zookeeper集群获取元数据信息meta表的region,再通过其region范访问所在regionServer获取元数据信息→
2、查找到相应的region信息后,找到对应的RegionServer,请求相应RegionServerdu读取数据(读取顺序:cache、memstore、Hfile)→
3、读取的数据第一时间写入blockCache中,再返回客户端

Hbase的写流程:

图解

在这里插入图片描述

过程

1、首先还是先找到meta的位置IP(通过zookeeper)→
2、 访问meta表,读取数据→
3、 根据namespace、tablename、rowkey在Meta表中确定需要写入的Rowkey该保存到那个region中→
4、找到该Region对应的HRegionServer,发送写数据请求→
5、HRegionServer先把数据写入到Hlog中,在将数据写入到MemStore中(大于128Mb时写入Hdfs中落盘HFile文件,落盘的同时删除对应的Hlog和memStore历史数据),反馈client写数据成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值