18-HBase整理

hbase

HBase整理思维导图下载

hbase是数据库

特点

  • 高可靠性
  • 高性能
  • 面向列
  • 可伸缩
  • 实时读写

数据量

  • 十亿级别的行
  • 百万级别的列

速度快的原因

  • 充分利用内存
  • 使用了LSM树
  • 缓存机制
  • 文件是顺序读

数据模型

rowkey

  • 相当于MySQL中的主键,唯一标识一行记录
  • rowkeys是字典序
  • rowkey的长度最长是64k,但是一般推荐10-100字节

column family

  • 一组列的集合
  • 列族必须作为表的schema定义给出
  • 列族是权限,存储的最小单元

qulifier

  • 可以动态的,随机的插入
  • 表定义之后没有限制列,随着值的插入也把列插入
  • 列必须归属于某一个列族

timestamp

  • 时间戳,64为整数,精度是毫秒
  • 起版本号的作用,一个Cell中可以存在多版本的数据
  • 时间戳可以自己定义,但是一般不推荐

cell

  • 存储数据的最小单元(逻辑概念)

  • 存储的是KV格式的数据

    • K: rowkey+column family+qulifier+timestamp
    • V:value
  • hbase的cell存储数据的时候没有类型的区分,存放的都是字节数组

架构

hbase是主从架构

角色

  • client

    • 操作hbase的接口,并维护客户端缓存
  • zookeeper

    • 保证任何时刻集群中有且仅有一台avtive的master

    • 存储所有region的寻址入口

      • 所有region元数据存储在哪一台regionserver
    • 监控regionserver的上线和下线信息,并实时通知master

    • 存储相关的表的schema数据

  • master

    • 分配region
    • 保证整个集群中的所有regionserver的负载均衡
    • 当发现某一台regionserver宕机之后,重新分配上面的region
    • 当region变大进行裂变的时候,master去分配region到哪一台regionserver
  • regionserver

    • 负责接受客户端的读写请求,处理对于region的IO
    • 当某一个region变大之后,负责等分为两个region
  • region

    • 相当于表的概念,一张表至少对应一个region
    • 当表的数据过大的时候,region会发生裂变
  • store

    • 相当于列族

    • 角色

      • memstore

        • 位于内存
        • 每一个store有一个memstore
      • storefile

        • 磁盘存储空间,将数据持久化的存储位置
        • 每一个region有一个或者多个storefile
        • storefile可以进行合并操作
    • 存储结构:使用了LSM的数据模型

读写流程

  • 读流程

    • 1、客户端向zk中发送请求
    • 2、从zk中拿到metadata的存储节点
    • 3、去存储metadata的节点获取对应region的所在位置
    • 4、访问对应的region获取数据
    • 5、先去memstore中查询数据,如果有结果,直接返回
    • 6、如果没有查询到结果,去blockcache查找数据,如果找到,直接返回
    • 7、如果没有找到,去storefile中查找数据,并将查询到的结果缓存会blockcache中,方便下一次查询
    • 8、将结果返回给客户端
    • 注意:blockcache是缓存,有大小限制,会有淘汰机制,默认将最早的数据淘汰
  • 写流程

    • 1、client向zk发送请求
    • 2、从zk中拿到metadata的存储节点
    • 3、去存储matadata的节点获取对应region所在的位置
    • 4、访问对应的region写数据
    • 5、首先会向wal中写数据,写成功之后才会存储到memstore
    • 6、当memstore中的数据量达到阈值之后,进行溢写,溢写成storefile
    • 7、store file是一个个的小文件,会进行合并(minor,major)
    • 8、store file是对hfile的封装,hfile是实际存储再hdfs上的数据文件

WAL

  • write ahead log
  • 放置数据丢失
  • 先写内存,再向hdfs上溢写,但是是异步的方式

JAVAAPI

HBaseAdmin

  • 管理表

    • createtable
    • disabletable
    • deletetable

HTable

  • 管理数据

    • put
    • get
    • scan
    • delete
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值