分享

Scan的效率怎么提高??

出河种花 发表于 2017-5-17 16:00:36 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 7335
我在map方法里需要查找hbase中的记录,代码如下:

Scan scan = new Scan();
scan.setCaching(500);
scan.setCacheBlocks(true);

scan.setStartRow((icdevice_id + "," + start).getBytes());
scan.setStopRow((icdevice_id + "," + end).getBytes());

ResultScanner rs = table.getScanner(scan);
for (Result result : rs) {
        业务代码
        }

map方法主要耗时的就是这一段代码,花费时间最低4ms,最高可能会到400ms。这个表中有278万条记录。


不知道有什么方法可优化读表的操作?

我又在想是不是把数据存储在hbase中本来就是不合理的选择。愁

已有(3)人评论

跳转到指定楼层
出河种花 发表于 2017-5-17 16:59:20
求解 T T  最后要计算的数据很大  而且集群的机器又都是要报废的机器,性能不好,不能把时间都花在hbas读取上
回复

使用道具 举报

jixianqiuxue 发表于 2017-5-17 19:56:25
出河种花 发表于 2017-5-17 16:59
求解 T T  最后要计算的数据很大  而且集群的机器又都是要报废的机器,性能不好,不能把时间都花在hbas读取 ...

优化的方法很多,下面仅供楼主参考
1.开启bloomfilter

2.hbase对于内存有特别的嗜好,在硬件允许的情况下配足够多的内存给它。
    通过修改hbase-env.sh中的
    export HBASE_HEAPSIZE=3000 #这里默认为1000m


3.增大RPC数量
    通过修改hbase-site.xml中的   
    hbase.regionserver.handler.count属性,可以适当的放大。默认值为10有点小



更多:
HBase性能深度分析和性能调优
http://www.aboutyun.com/forum.php?mod=viewthread&tid=5788


回复

使用道具 举报

出河种花 发表于 2017-5-17 20:01:23
jixianqiuxue 发表于 2017-5-17 19:56
优化的方法很多,下面仅供楼主参考
1.开启bloomfilter

谢谢指导,学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条