hbase 读写调优_HBase性能优化-读写性能优化

查询优化

批量get请求

使用批量请求,可以减少RPC的次数,显著提高吞吐量。批量get请求要么成功返回所有请求数据,要么抛出异常。

设置Scan缓存

一次scan可能会返回大量数据,但是实际客户端发起一次scan请求,并不会将所有数据一次性加载到本地,而是分成多次RPC请求进行加载,这样设计一方面是因为大量数据请求可能会导致网络带宽严重消耗进而影响其他业务,另一方面是有可能因为数据量太大导致客户端发生OOM。所以采用先加载一部分数据到本地,然后进行遍历,每次加载一部分数据,如此往复,直至所有数据加载完成。数据加载到本地就存放在scan缓存中,默认100。

通常情况下,默认的scan缓存设置就可以正常工作的。但是在一些大scan(一次scan可能需要查询几万甚至几十万行数据)来说,每次请求100条数据意味着一次scan需要几百甚至几千次RPC请求,这种交互的代价无疑是很大的。因此可以考虑将scan缓存设置增大。

指定读取的列

HBase是列族数据库,同一列族的数据存储在一块,不同列族是分开存储的,如果一个表由多个列族,只是根据RowKey而不指定列族进行检索的话,不同列族的数据需要独立进行检索,性能必然会比指定列族的查询差的多。

此外指定请求的列的话,不需要将整个列族的所有列的数据返回,这样就减少了网路IO。

关闭ResultScanner

在使用table.getScanner之后,记得关闭,否则它会和服务器端一直保持连接,资源无法释放,从而导致服务端的某些资源不可用。

禁用块缓存

当离线访问HBa

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值