分享

hbase根据rowkey读取数据时间超过2秒

xyxdu 发表于 2015-7-27 09:42:49 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 7 42123
hbase版本是0.98.4 ,jdk1.6  
    rowkey 是hash算出来的随机字符串,表示分区创建的。写入100条测试数据,读取数据的时候。每秒只是读取600条左右数据,也会出现读取时间2秒到5秒的。大概10条左右。15000左右的tps时,出现2000条左右。5000tps时,出现100条左右。并且不是每次读取都出现超时的情况。偶尔出现。
    查看日志,没有报异常,gc也都正常,在做ygc和oldGc时候都没有出现查询超过2秒的情况。
    调整hbase配置, hbase.regionserver.handler.count 增大为 20 ,
hfile.block.cache.size 增大为 0.3,读取tps增长的很快。可是仍然出现
读取时间超过2秒甚至到了20秒的情况。
请问大家有没有什么办法确定hbase读取数据时get方法耗时都在什么地方了。有人遇到过这个问题吗。怎样保证读取数据时间的稳定呢。

已有(7)人评论

跳转到指定楼层
arsenduan 发表于 2015-7-27 14:48:41
xyxdu 发表于 2015-7-27 14:42
直接根据key查询的啊
HTable table=new HTable(conf, HbaseConstant.TABLE_NAME);
Get get = new Get(B ...

是的话,楼主可以在优化下
下面仅供参考,希望有所帮助

优化hbase的查询提升读写速率优化案例及性能提升的几种方法
http://www.aboutyun.com/thread-7468-1-1.html




HBase设计与开发性能优化
http://www.aboutyun.com/thread-10367-1-1.html



优化hbase的查询优化-大幅提升读写速率
http://www.aboutyun.com/thread-7657-1-1.html




淘宝为什么使用HBase及如何优化的
http://www.aboutyun.com/thread-6940-1-1.html



Facebook针对hbase的优化方案分析
http://www.aboutyun.com/thread-7180-1-1.html



回复

使用道具 举报

arsenduan 发表于 2015-7-27 11:23:56
这个rowkey都是随机生成的吗?
如果rowkey里面包含查询的内容是比较快的
回复

使用道具 举报

xyxdu 发表于 2015-7-27 14:38:21
arsenduan 发表于 2015-7-27 11:23
这个rowkey都是随机生成的吗?
如果rowkey里面包含查询的内容是比较快的

rowkey是随机生成的,我存在了文件里,读取的时候从文件里取key值,从hbase获取数据。

回复

使用道具 举报

arsenduan 发表于 2015-7-27 14:40:12
xyxdu 发表于 2015-7-27 14:38
rowkey是随机生成的,我存在了文件里,读取的时候从文件里取key值,从hbase获取数据。

最好key里面包含查询的内容,否则会很慢
回复

使用道具 举报

xyxdu 发表于 2015-7-27 14:42:56
arsenduan 发表于 2015-7-27 14:40
最好key里面包含查询的内容,否则会很慢

直接根据key查询的啊
HTable table=new HTable(conf, HbaseConstant.TABLE_NAME);
Get get = new Get(Bytes.toBytes(rowKey));      
Result result = table.get(get);
回复

使用道具 举报

Helii 发表于 2016-3-24 20:06:43
好东西  谢谢
回复

使用道具 举报

xyxdu 发表于 2016-9-18 14:29:20
去年提的一个问题,现在没有最终解决,但是后来发现一些问题,我测试的时候并发线程太多,并且没有做延时,所以每秒集中访问量特别大,对超时出现频率有一定的影响,最终切换使用ElasticSearch提供实时查询服务,TPS非常高,并且没有出现延迟到秒级别的响应,全部在毫秒级完成任务。
回复

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条