关于HBase(二) HBase的概念和实现

概念

HBase是在HDFS上开发的面向列的分布式数据库,结构化数据的分布式存储系统

需要访问超大规模数据集时,可以用HBase

面向列族的存储器,调优和存储在列族上进行,同意列族内的成员最好有相同的访问模式和大小特征



    > 根据行的键值排序,排序按照字节序
    > 通过表的主键访问表
关于HBase(二) HBase的概念和实现
cell 单元格
    行和列交叉决定
    版本号:插入单元格时的时间戳

    cell内容是字节数组

column family 列族
    列族成员有相同前缀, info:format info:geo
    格式:前缀:修饰符

建表:
    建表必须给出列族的定义
    后期可以新增列族成员

与RDBMS不同:1) cell有版本号 2)行是排序的 3)列族存在的话,可以添加列

分区域region
    HBase自动水平划分区域
    区域由所属表,和区域的第一行和最后一行表示
    区域超出阈值,则根据行划分
    区域是HBase集群分布数据的最小单位,数据放到服务器集群
    所有区域按次序排序构成表的内容


加锁
行的更新是原子的,加锁模型简单 locking model

实现

HBase模型

关于HBase(二) HBase的概念和实现

master节点
    协调管理regionserver
    启动全新安装,将区域分配给regionserver
    恢复regionserver故障

regionserver节点
    区域管理
    相应客户端读写请求
    > 通知master划分了新子区域,则master将父区域离线,子区域代替

HBase依赖于ZooKeeper
HBase通过Hadoop文件系统API持久化存储数据


hbase:meta维护集群所有区域列表,状态和位置
    > 元数据项:table + 区域起始行 + 区域创建时间.MD5
    > 客户端可能会缓存hbase:meta
写操作:
    > 提交日志-> 内存memstore -> 文件系统
读操作:
    > 查看memstore -> 按照次序从新到旧刷新文件找到符合查询的版本
后台进程
压缩多文件进程
分割大文件进程