hbase总结

2019-06-01  本文已影响0人  AlexDawson

一、介绍

1.hbase是一个高纬度,面向列,高性能,高可靠的分布式实时数据库

2.hbase是一个nosql数据库,可以存储结构化,半结构化,非结构化的数据

二、数据模型

高维数据库,4个维度确定一个单元格

数据存储的格式是字节数组

1.rowkey

    唯一确定一行数据

    最多64kb

    按字典排序

2.列族

    创建表的时候定义

    一个列族可以有多个列

    一个列族的数据放到同一个目录下

3.列名

    动态添加

    每一行的列的个数和名称可以不同

4.版本号

    一般用时间戳来充当版本号

    默认是降序排序的,自动获取最新版本

    每个单元格可以有多个版本

三、架构

1.zookeeper

    监控regionserver的上下线信息,通知master

    存储region的寻址入口(表的增删改查等dml操作不通过master来操作)

    保存hbase的元数据信息

    保证集群中只有一个可用的master

2.master

    若发现失效的regionserver(由zookeeper告知),会移动这台regionserver的region到其他机器上

    master管理表的创建,删除,修改、重命名等ddl操作

    负责集群的负载均衡

    给regionserver分配region

3.regionserver

    切分过大的region

    负责region的io读写请求    

4.region

    对应的是一张表中的一段连续的数据

    默认一个region对应一张表

    随着表的数据越来越多,region分裂成2个,后面会不断分裂

5.hlog

      存放操作日志,数据存放是首先将操作日志放入hlog中,保证以后regionserver失效时,hbase能将其恢复

6.store

    一个store中由一个memstore和0-多个storefile

    一个store对应一个列族

7.memstore和storefile

    数据存放的时候首先会写入到memstore内存缓冲区中,达到memstore的阈值128M的时候会溢写到storefile中,最后storefile会以hfile的形式存入hdfs中

8.compact

    小合并:挑一些文件比较小的进行合并,只挑一部分文件合并

    大合并:将所有的storefile文件进行合并

    在合并的时候会从磁盘层面删除数据

四、API

1.put

    可以批量插入,List<Put>

2.get

    可以批量获取,List<Get>

3.scan(重要)

    把握rowkey时字典排序的原则

4.delete

    删除数据的时候,只会标记一个删除状态的表示,并不会马上删除数据

五、过滤器

1.pagefilter

2.valuefilter

3.singlecolumnvaluefilter

4.keyonlyfilter

5.prefixfilter

六、protobuf

    1.一个第三方插件,可以产生java类代码,里面由序列化和反序列化的方法

    2.可以将多个字段的数据,合并成一个字段,然后通过序列化存储到hbase的一个字段中,节省磁盘空间

七、性能优化

1.预分区

    提前分区,减少split分区对集群的性能影响

    数据迁移

2.热点问题

    由于rowkey设计不合理导致的客户端的读写请求只会访问小部分的region,其他大部分的region访问不到,负载不均衡

    解决:重新设计rowkey,取反,取hash,取模

    无论是hash还取反,都会打散数据,后期查询的时候就不能通过scan方法遍历数据

3.列族

    一张表列族的个数一般不超过两个,当一个store中的memstore发生溢写的时候,相邻的memstore也会发生溢写,这样对集群的io消耗比较大

4.blockcache

    查询数据的时候,首先查询memstore,在查询blockcache,最后查看storefile中的文件

    当从磁盘文件查出数据后,就会放入到blockcache中

    blockcache数据队列的三个级别:第一次查询到的数据会放入single,多次查询到的数据存放到multi中,除非手动指明某些数据放入到in-memory中,否者数据不会存放到这个级别中

5.compact

    小合并:有多种因素决定,最少三个符合条件的文件,最多10个文件,文件不能太大,大于某个参数,合并的时候,优先选择创建时间比较早的文件

    大合并:所有的文件都合并,io消耗大,默认7天,优化:关闭自动合并,改成手动合并

6.生命周期

上一篇 下一篇

猜你喜欢

热点阅读