关于HBase(二) HBase的概念和实现
概念
HBase是在HDFS上开发的面向列的分布式数据库,结构化数据的分布式存储系统
需要访问超大规模数据集时,可以用HBase
面向列族的存储器,调优和存储在列族上进行,同意列族内的成员最好有相同的访问模式和大小特征
表
> 根据行的键值排序,排序按照字节序
> 通过表的主键访问表
cell 单元格
> 行和列交叉决定
> 版本号:插入单元格时的时间戳
> cell内容是字节数组
column family 列族> 列族成员有相同前缀, info:format info:geo
> 格式:前缀:修饰符
建表:
> 建表必须给出列族的定义
> 后期可以新增列族成员
与RDBMS不同:1) cell有版本号 2)行是排序的 3)列族存在的话,可以添加列
分区域region
> HBase自动水平划分区域
> 区域由所属表,和区域的第一行和最后一行表示
> 区域超出阈值,则根据行划分
> 区域是HBase集群分布数据的最小单位,数据放到服务器集群
> 所有区域按次序排序构成表的内容
加锁
行的更新是原子的,加锁模型简单 locking model
实现
HBase模型
> 协调管理regionserver
> 启动全新安装,将区域分配给regionserver
> 恢复regionserver故障
regionserver节点
> 区域管理
> 相应客户端读写请求
> 通知master划分了新子区域,则master将父区域离线,子区域代替
HBase依赖于ZooKeeper
HBase通过Hadoop文件系统API持久化存储数据
hbase:meta维护集群所有区域列表,状态和位置
> 元数据项:table + 区域起始行 + 区域创建时间.MD5
> 客户端可能会缓存hbase:meta
写操作:
> 提交日志-> 内存memstore -> 文件系统
读操作:
> 查看memstore -> 按照次序从新到旧刷新文件找到符合查询的版本
后台进程
压缩多文件进程
分割大文件进程