使用脚本的方式来批量统计hbase表的记录数和字节数

最近由于运维工作需要要对系统中的所有hbase表进行一次统计记录数和占用空间大小,如果不借助脚本的话,统计记录数可以在hbase shell中用count命令,而统计表占用的空间大小可以使用hadoop fs –du –s /hbase/data/default/tablename来统计该表所战胜的空间大小,但这样做需要人工干预,统计空间大小还好很快,但count记录数的快慢与表的大小有关,有些表可能需要几个小时来count。

后来发现hbase shell可以批量的执行文件中的命令,就是说他可以在一个文件中定义好所有需要执行的hbase命令,如定义一个文件,文件名为batch.txt:

count ‘table1’

count ‘table2’

….

这后就可以使用hbase shell batch.txt来批量执行这个文件中的命令。

但由于hbase shell执行每条命令时会打印一些不相关的信息,这样就需要对执行结果再进行解析从中提取出每张表的记录数,而且hbase shell的count命令是在客户端来统计的,它相当于执行一个针对表的scan,然后对scan的结果result进行轮循的方式来统计,这样等于串行的去访问每个region server结果是非常慢。

最后通过查看hbase脚本的代码发现,实际上hbase是通过jruby来实现的,而jruby是可以与java互动的,最后我们写了一个jruby脚本调用hbase client的api,而我们的每张表中都增加了一个对hbase统计记录数进行统计的协处理器,这样对记录进行count就可以走这个协处理器(这个协处理器是通过并行的方式来统计表的记录数的),也比较快。具体的jruby脚本如下(由于工作环境不能拷贝粘贴代码,只能截图了):

161042_kZkW_914897.png

 

转载于:https://my.oschina.net/u/914897/blog/1588558

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值