HBase-7.hbase查询多版本数据&过滤器原则&批量导入Hbase&hbase预分区
来源:互联网 发布:世伟洛克淘宝 编辑:程序博客网 时间:2024/05/17 07:12
HBase怎么查询同一条记录多个版本数据
(1)Hbase shell命令模式
get 'stu','rk01', {COLUMN => 'info:name', VERSIONS => 5}
(2)JAVA API 模式
Get get = new Get("rk01".getBytes());
get.addColumn("info".getBytes(), "name".getBytes());
get.setMaxVersions(5);
rs = tTable.get(get);
HBase过滤器实现原则
采用bloomfilter进行过滤,Bloom Filter是一种空间效率很高的随机数据结构
(1)BLOOMFILTER在HBase的作用
HBase利用 BLOOMFILTER来提供随机读(GET)的性能,对于顺序读(Scan),设置BLOOMFILTER是没有作用的。
(2)BLOOMFILTER在HBase的开销
BLOOMFILTER是一个列族级别的配置,如果你表中设置了BLOOMFILTER,那么HBase在生成StoreFile时候包含一份BLOOMFILTER的结构数据,称为MetaBlock;开启BLOOMFILTER会有一定的存储以及内存的开销。
(3)BLOOMFILTER如何提供随机读(GET)的性能
对于某个region的随机读,HBase会遍历读memstore及storefile(按照一定的顺序),将结果合并返回给客户端。如果你设置了bloomfilter,那么在遍历读storefile时,就可以利用bloomfilter,忽略某些storefile。
(4)Region的StoreFile数目越多,BLOOMFILTER效果越好
(5)Region下的storefile数目越少,HBase读性能越好
HBase短时间批量导入数量过多的话就会被锁,该怎么办?
通过调用 HTable.setAutoFlush(false)方法可以将 HTable 写客户端的自动 flush关闭, 这样可以批量写入数据到 HBase, 而不是有一条 put 就执行一次更新, 只有当put 填满客户端写缓存时, 才实际向 HBase 服务端发起写请求。默认情况下 auto flush是开启的。
HBase怎么预分区
预分区的目的主要是在创建表的时候指定分区数,提前规划表有多个分区,以及每个分区的区间范围,这样在存储的时候rowkey按照分区的区间存储,可以避免region热点问题。
通常有两种方案
方案1:shell 方法
create 'tb_splits', {NAME => 'cf',VERSIONS=> 3},{SPLITS => ['10','20','30']}
方案2: JAVA程序控制
l 取样,先随机生成一定数量的rowkey,将取样数据按升序排序放到一个集合里
l 根据预分区的region个数,对整个集合平均分割,即是相关的splitKeys.
l HBaseAdmin.createTable(HTableDescriptor tableDescriptor,byte[][]splitkeys)可以指定预分区的splitKey,即是指定region间的rowkey临界值.
- HBase-7.hbase查询多版本数据&过滤器原则&批量导入Hbase&hbase预分区
- HBase 批量导入测试
- spark批量导入hbase
- hbase数据查询及过滤器详细使用
- Hbase
- HBase
- hbase
- HBase
- HBASE
- Hbase
- Hbase
- HBase
- hbase
- HBase
- HBase
- hbase
- hbase
- Hbase
- Redis持久化方式介绍
- MySQL数据库的JDBC连接方法
- Windows Mobile 常用键值(VK)对应表
- android EditText多行文本输入的若干问题
- MDM客户端截图
- HBase-7.hbase查询多版本数据&过滤器原则&批量导入Hbase&hbase预分区
- quickcocos2d-x BMFont自定义字体 fnt使用 以及工具地址下载
- 事件和进程间的数据交换
- hdu 5583 Kingdom of Black and White
- unix环境高级编程之信号篇(二)
- C# 编译的DLL文件在其他项目中调用时,看不见注释
- 创建COM并调用
- 对照地图看历史剧,学习历史地理
- HDU 3065 病毒侵袭持续中 AC自动机