HBase

2021-03-02 18:08:17 浏览数 (1)

HBase

数据模型

Row Key

字典顺序

最多存储64k的字节数据

Time Stamp

按照时间倒序排列

默认为64位整型数据

可以制定版本的保留条数,默认为1,即当前版本数据

colum family列族&&qualifier列

列族在建表时给出

列族成员动态加入

权限,调优都是在列族层面

列族成员分为几个文件分布在一个列族的文件夹中

cell

由行和列交叉决定

有版本

存储无类型全部是用字节码储存

HLog

记录操作,也能记录数据方便数据丢失后恢复

调优

表的设计

预先多创建空的region

rowkey设计

· 越小越好

· 根据实际的业务需求来设计

· 尽量保证散列性

不要定义太多列族

先写入缓存中

合并major compaction

· 把自动执行改为手动执行

写表操作

多个客户端并发进行写操作

有多个相同格式数据的写入应该批量进行

读表操作

多个客户端并发进行读操作

批量读数据

缓存查找的结果

根据业务调整Memstore和BlockCache的大小比例

架构

client

访问HBase

维护cache,加快对HBase的访问

zookeeper

用于HBase的协调服务,保证有一个Master运行

存储寻址入口

监控RegionServer的上线和下线信息,实时通知Master

存储schema和table的元数据信息

Master

为RegionServer分配Region

为RegionServer进行负载均衡

发现RegionServer失效,重新分配其上的Region

管理table的增删改操作

RegionServer

维护Region,处理对Region的IO请求

负责切分在运行过程中,变得过大的Region

Region

每个Region保存表中一段连续的数据

每个表开始只有一个Region,随着数据的增加产生分裂

随着Region的不断分裂,会分布在其他的RegionServer中

Memstore和storefile

一个storefile代表一个列族

先将数据写入Memstore中,超过阈值产生溢写,写入单独storefile文件中

storefile数量超过阈值会进行合并

· minor compaction

• 小而少的文件合并

• 效率高

· major compaction

• 所有storefile合并成一个文件

• 默认24小时触发一次

storefile的大小和数量超过一定阈值后,会分裂Region,负载到其他的Region Server中

BlockCache

· RegionServer内存的一部分

· 客户端查数据是先查Memstore,再查BlockCache,最后再storefile

0 人点赞