HBase数据模型与原理

HBase(Hadoop Database)数据可以放在单主机上,非HDFS上,但不是分布式的。一般都是放在HDFS上。HBase需要Zookeeper。

结构体系

  1. Master:为RegionServer分配Region;负责RegionServer的负载均衡;发现失效的RegionServer便重新分配其上的Region;管理用户对table的增删改操作。看着作用不是很大,只要活着即可。
  2. RegionServer:维护Region,处理对这些Region的IO请求;负责切分在运行过程中变得过大的Region。
  3. Region:HBase自动把表水平切分成多个Region,每个Region保存表里面一段连续的数据。每个表开始只有一个Region,数据越来越大,超过阈值自动分为两个(粒度到行,尽量等分),这样越来越多Region,最后一张完整的表会分布在多个RegionServer上。
  4. Store:一个Region中包括多个Store。一个Store对应一个CF(列族)。一个Store包括一个Memstore和多个Storefile(底层存储格式是HFile,存储在HDFS上)。写操作时先写入Memstore,当其超过设定阈值后RegionServer会启动Flashcache进程写入Storefile,每次写入一个单独的Storefile。当Storefile文件数量增到一定阈值后系统会进行合并(minor、major compact,minor进行少量合并,major会进行所有CF的合并,合并期间不能访问,所以合并需要优化),合并时会进行版本合并和删除工作(版本个数可设,但在合并时才考虑删除多出的旧版本数据),形成更大的Storefile。客户端检索时先找Memstore,找不到再找Storefile。

数据模型

  1. Row Key,决定一行数据,按字典顺序排列,最多64KB字节数据。
  2. Column Family & Quanlifier,列族和限定,限定也叫列。列族必须作为表模式(schema),列名以列族为前缀,列可以按需动态加入,例如:course:math。创建语句:create “tablename”, “columnfamily”。同一个列族数据存在同一个目录下(数据量越大,文件越多)。
  3. Timestamp,时间戳,修改保留原来的值。HBase中没有Update操作。倒序排列(新的放在前面)。时间戳可以默认赋值(精确到毫秒),也可以自己赋值,但不能重复。
  4. Ceil,单元格,由行和列交叉确定,单元格是有版本的。单元格内容是为解析的字节数组,由{row key, column(family+qualifier), version}组成和确定(每个单元格都带着这些数据)。数据没有类型,字节码形式存储。
  5. HLog,HLog文件是普通的Hadoop Sequence File。Sequence File的Key是HLogKey对象,它记录了归属信息,有table,region,sequence number(起始为0的递增数)和timestamp。HLogValue对应HFile中的Value,也就是HLog不仅记录日志还记录数据。这样可以容灾(灾备)。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值