码迷,mamicode.com
首页 > 其他好文 > 详细

hbase读写优化小记

时间:2014-08-28 16:58:40      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:style   使用   io   strong   数据   问题   sp   时间   on   

客户端编程时我们可以注意的:
1、批量读
当我们使用scan顺序读的时候,默认是一个RPC请求返回一条数据,我们可以设置一次返回多条缓存在客户端缓存,比如sn.setCaching(1000);
2、批量写
数据在客户端累计到一定量再发次请求,批量写
table.setWriteBufferSize(1 * 1024 * 1024); 
table.setAutoFlush(false); 
    
3、使用filter
使用过滤器,在服务器端就做好过滤再返回数据到客户端,减少网络流量


服务端需要注意到的地方:
1、rowkey的设计尽量短小,尽量避免顺序递增
2、指定列族参数,比如大多是scan顺序读,可将block设大些,默认块大小是64K,可以设为128,使用bloomfilter提高随机读性能规避一些hfile的读
3、region热点
开始会不断往一个region写,可以预划分region
如果rowkey不可避免会造成热点,在rowkey加哈希前缀 对region server数量取余,这种情况scan读的时候会比较麻烦,需要客户端计算好各个子范围开启多个线程分别去范围读
4、memstore提高写性能,blockcache提高读性能,看需求调整,调大一方调小一方,一般加起来占60至70%
5、关闭major compact,手工弄
6、频繁split我们可以改为手工split
比如一开始都是只往一个region里写,只有当region到一定数量才可能负载比较均衡(写请求),这里又出现了个问题,假设各个region大小非常均匀,他们有可能在同一时间split,影响效率,我们可以关闭split,手工split某些region

hbase读写优化小记

标签:style   使用   io   strong   数据   问题   sp   时间   on   

原文地址:http://blog.csdn.net/u011750989/article/details/38758705

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!