hbase存储原理
来源:互联网 发布:java web角色权限设计 编辑:程序博客网 时间:2024/05/01 23:58
Hbase每个cell插入时都会写入时间戳(当前系统时间)来做版本标识,在读取时如果没有指定时间戳,默认取最新时间。Hbase默认保留3个版本数据。
HBase写入原理
1 客户端写入请求-->MemStore同时会写入Hlog,类似于Commit log,做数据恢复用
2 MemStore满足条件后刷入StoreFile
3 StoreFile满足条件后多个storeFile合并成一个大StoreFile
4 storeFile到一定大小后触发split,把当前region split成2个region,当前region下线,新region被HMater分配到HRegionServer上
图 1 一张表有2个列族,红色和黄色,每个列族有2个列,如果有多个版本同一位置会有多个块。
图2 同一个列族的数据会存储在一块
图3 r1:key值,cf1:列族的名字,c1:列名。t1:版本号,value值
图4 从左到右数据筛选效率越来越底下,最好把重要筛选信息存储在rowkey,可以提交查询性能
HBase读数据原理
1 客户端请求到zookeeper,zookeeper根据先查询那台主机管理meta信息,把请求转发到该主机
2 hbase 查询-ROOT-和.META获取目标表对应的region,及region对应的regionServer地址,连接regionServer,查到数据
Meta表存储实际创建的表的region信息
因为meta数据特别多,也需要分region存储,所以root表就存储meta表的region信息。Zookeeper先读取zookeeper集群配置获取root表存储的regionServer地址。然后连接该地址访问root表获取目标业务表在meta中对应的region和地址,然后连接到该地址查询meta信息获取实际业务数据存储的region地址,然后连接该地址获取业务数据
Hbase认为root表不会特别大,所以没有分区,直接把root表存储的regionServer地址配置在zookeeper中。
hbase数据刷入物理表时会被顺序写入,在写入内存memstore时已经排序
Hbase客户端默认一次操作发送一次RPC请求到服务端,如果要使用缓冲区批量提交,可以设置自动刷新为false。Table.setAutoFlush(false);
void setWritaeBufferSize(long writeBufferSize) throws IOException可以设置缓冲区大小,默认为2M
也可以在Hbase-site.xml中设置hbase.client.write.buffer
- hbase存储原理
- HBase存储原理探究
- Hadoop HBase存储原理结构学习
- HBase-3.HBase读数据和存储数据原理
- HBase存储
- hbase 原理
- hbase原理
- HBase 原理
- HBase原理
- HBase原理
- HBASE 原理
- hbase原理
- hbase原理
- Hbase原理
- hbase操作(shell 命令,如建表,清空表,增删改查)以及 hbase表存储结构和原理
- hbase操作(shell 命令,如建表,清空表,增删改查)以及 hbase表存储结构和原理
- HBase存储架构
- HBase存储架构
- 装机ubuntu14.04,部署JDK
- mongodb 查询某个字段 并删除
- 一个C++源代码在各种编译器中的比较
- webrtc-房间服务器搭建
- 深入理解javascript原型和闭包(10)——this
- hbase存储原理
- 基于Jenkins + Git的PHP项目编译脚本
- ModelMap和ModelAndView的作用
- Unity打开网页
- 深入理解javascript原型和闭包(11)——执行上下文栈
- 有用的链接
- Ethereal 过滤规则
- C#索引器
- Android之仿美拍主要菜单滑动反弹效果