hbase存储原理
2016-10-19 11:28
46 查看
Hbase每个cell插入时都会写入时间戳(当前系统时间)来做版本标识,在读取时如果没有指定时间戳,默认取最新时间。Hbase默认保留3个版本数据。
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,可以提交查询性能
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写入原理
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
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- 数据库链接字符串查询网站
- 分布式版本管理git入门指南使用资料汇总及文章推荐
- Facebook's New Real-time Messaging System: HBase to Store 135+ Billion Messages a Month
- 新闻
- Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别
- DB2实例管理
- DB2实例管理
- 保障MySQL数据安全的14个最佳方法
- 在VMware网络测试“专用VLAN”功能
- mysql问答汇集
- 第三章 数据库备份和还原
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法
- 一个简单的asp数据库操作类
- CentOS下DB2数据库安装过程详解
- EasyASP v1.5发布(包含数据库操作类,原clsDbCtrl.asp)第1/2页
- sql2008 还原数据库解决方案