HBase源码分析与LastN最佳实践探究

1、背景

06年,Google发布了《BigTable: A Distributed StorageSystem for Structured Data》,由PowerSet实现并开源,HBase是一种分布式、可扩展的大数据存储结构,如果在HBase中存放了时序数据,常常需要访问最近的若干数据LastN。本文基于上述背景进行LastN的优化实现。

2、方案设计

hbase版本基于公司hbase组件1.0.19-kwai,假设Rowkey为:分钟级时间戳,由于hbase根据rowkey的字典序从小到大存储,因此,显而易见可以使用,设置startRowkey、stopRowkey,同时设置reverse函数。

3、scan and reversed scan

3.1、scan

用户可以通过hbase client的scan操作完成多样的查询,常见的有startRow、endRow、Filter、caching、batch、reversed等,其中scan操作涉及到reverse的几种场景。cloudera官方文档,有对几种场景的详细说明https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/admin_hbase_scanning.html

下边从图文的角度

正确scan场景:不设置startRow、stopRow
在这里插入图片描述
错误场景:设置startRow、stopRow,设置Reverse,但未正确使用
在这里插入图片描述

3.2、reversed scan

设置startRow、stopRow,正确使用Reversed
在这里插入图片描述
同时通过源码阅读,分析scan.next()–>scan.nextRow—>nextInternal()–>isStopRow(),从startRow不断去找stopRow,因此设置reversed就是比较器的方向改变,从startRow另一个方向迭代。

3.3、reversed效率测试

数据样本 时间段 正序(ms) 逆序(ms)
样本数据1 1000个点 152 152
样本数据2 30720个点 1492 1964
样本数据3 30720个点 1589 2080
通过较大数据量的reverse查询,发现逆序比正序的效率低。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴成伟0122

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值