HBase初探

HBase

一、为什么使用HBase?

最近打算用Hbase存储kafka消息队列的消息内容,防止消息丢失,方便后期补偿作用。

二、HBase是什么?

HBase是Hadoop DataBase的简写,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统/数据引擎,组成如下:

  • 基于hadoop的HDFS作为文件存储
  • 基于Hadoop MapReduce来处理HBASE中的海量数据
  • 基于Zookeeper作为协同服务

偷大佬得概念图
在这里插入图片描述

三、HBase的特点有哪些?

  • 存储数据量大
  • 面向列
  • 稀疏
  • 没有固定格式的存储
  • 数据多版本 (根据时间戳去判断数据的版本数据)
  • 数据类型单一(只有String)

三、HBase由哪些组成?

  1. 名词解释
    NameSpace:命名空间
    Region:区域
    Store:存储
    Rowkey:数据唯一key
    Column Family:列族
    Column Qualifier:列
    TimeStamp:时间戳
    Cell:唯一确认的单元

  2. HBase数据逻辑存放示意图在这里插入图片描述

  3. HBase数据物理存储形式
    例:rowkey为rowkey_01的数据存储形式,其中每一行都是Cell(唯一确定单元)
    在这里插入图片描述

  4. HBase数据中如何确定一行数据?
    HBase中确认一行数据的方式为 Rowkey+Column Famliy+Column +Timestamp

  5. HBase数据修改/新增的方式?怎样获取最新的数据?
    在这里插入图片描述
    HBase中进行增删改,都会新增一条记录,并且每次取值的时候都会取出TimeStamp最靠近现在时间的那一条记录

  6. HBase与MySql的类似对比,方便理解:
    在这里插入图片描述

四、HBase基础架构

zookeeper

  1. 监控master,保证只有一个master
  2. 存储所有region得寻址入口
  3. 监控Region Server得状态,并通知master
  4. 存储hbase中的元数据

Hmaster

  1. 为region server分配region
  2. 负责region server负载均衡
  3. hdfs得垃圾回收
  4. 处理schema得更新请求

region server

  1. 维护master给得region
  2. 负责处理client对这些region得读写请求,并和hdfs进行交互
  3. 负责region得切分

**region **

  1. hbase中分布式存储和负载均衡得最小单元
  2. region有两个重要属性就是StartKey和EndKey。表示这个Region维护的rowkey的范围
    在这里插入图片描述
    整体流程:
    服务端->zk->master->region server(java中的一个进程)->hlog->memory store->store file->hfile->HDFS

五、HBase写流程

/put/table/rowkey/column family/column
在这里插入图片描述
注:

  1. 老版本存在-root-表,本意是为了防止meta表过大,做一层切分
  2. java代码步骤:①获取锁②更新时间戳③打开wal④添加wal,并不同步⑤写内存⑥释放锁⑦同步wal⑧修改数据

六、HBase读流程

  1. Client访问Zookeeper,查找-ROOT-表,获取.META.表信息;
  2. 从.META.表查找,获取存放目标数据的Region信息,从而找到对应的RegionServer;
  3. 通过RegionServer获取需要查找的数据;
  4. RegionServer的内存分为MemStore和BlockCache两部分,MemStore主要用于写数据,BlockCache主要用于读数据。读请求先到MemStore中查数据,查不到就到BlockCache中查,再查不到就会到StoreFile上读,并把读的结果放入BlockCache。

七、HBase读比写复杂的原因

  1. 读会读取磁盘和内存
  2. 每一个flush操作都会生成hfile,而BlockCache只会缓存Hfile中的内容

八、Memory store flush

刷写时机:
Region Server

  1. 堆内存的40%
  2. 堆内存的40%的95%(95%-100%是不阻塞刷新的)
  3. 存在内存1h(最后一个文件记录事件为起始时间)

Region

  1. 单个Region内存达到128m,单个region进行刷写

wal:

  1. 单个wal文件过大
  2. wal文件默认为32个

九、HFile合并

Compact(单个文件)/major compact(全局)

十、Rowkey设计原则

  1. 散列性 (生成随机数,hash,字符串反转,MD5)
  2. 唯一性
  3. 长度原则(生成70-100位)
  4. 最佳是高位业务逻辑表示+低位hash
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值