启动hbase shell

进去hbase客户端所在服务器,cd hbase客户端路径

cd /usr/local/services/hbase/alihbase-2.0.0

启动hbase shell

./bin/hbase shell

找到要统计的表名

hbase(main):001:0> list

假设表名为 'foo'

执行RowCounter

首先退出Hbase shell

hbase(main):002:0> exit

执行RowCounter

[root@iZbp11w36qswr2zr3n7aymZ alihbase-2.0.0]# ./bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'foo'

因为RowCounter执行原理实际为执行MapReduce,如果表中数据量较大,需要等待较长时间,一般统计结果会打印在控制台中,我们使用alihbase 客户端2.0实际打印到的hbase.log文件中,因为执行时间略长,不能一直等着控制台输出,可以喝杯coffee,再回来看统计结果。

查看结果

进入log路径,默认在hbase客户端的所在路径下logs中,在统计任务启动至查看日志任务编号

日志中会打印:Submitting tokens for job: job_local518921693_0001

其中 job_local518921693_0001 就是任务编号,后续可以根据此编号查看统计结果

[root@iZbp11w36qswr2zr3n7aymZ alihbase-2.0.0]# cd logs/
[root@iZbp11w36qswr2zr3n7aymZ logs]# ls
hbase.log
[root@iZbp11w36qswr2zr3n7aymZ logs]# 

统计内容如下:

2019-04-02 17:23:05,056 INFO  [main] mapreduce.Job:  map 100% reduce 0%
2019-04-02 17:23:05,057 INFO  [main] mapreduce.Job: Job job_local512717422_0001 completed successfully
2019-04-02 17:23:05,085 INFO  [main] mapreduce.Job: Counters: 29File System CountersFILE: Number of bytes read=443041682FILE: Number of bytes written=450744300FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0Map-Reduce FrameworkMap input records=35468113Map output records=0Input split bytes=3260Spilled Records=0Failed Shuffles=0Merged Map outputs=0GC time elapsed (ms)=560Total committed heap usage (bytes)=6106644480HBase CountersBYTES_IN_REMOTE_RESULTS=2332960233BYTES_IN_RESULTS=2332960233MILLIS_BETWEEN_NEXTS=202221NOT_SERVING_REGION_EXCEPTION=0NUM_SCANNER_RESTARTS=0NUM_SCAN_RESULTS_STALE=0REGIONS_SCANNED=12REMOTE_RPC_CALLS=6187REMOTE_RPC_RETRIES=0ROWS_FILTERED=6175ROWS_SCANNED=35468113RPC_CALLS=6187RPC_RETRIES=0org.apache.hadoop.hbase.mapreduce.RowCounter$RowCounterMapper$CountersROWS=35468113File Input Format Counters Bytes Read=0File Output Format Counters Bytes Written=0

统计结果为 ROWS=35468113 ,foo表中有 35468113 条记录。

高阶统计方案-协处理器

这是我目前发现效率最高的RowCount统计方式,利用了HBase高级特性:协处理器!

我们往往使用过滤器来减少服务器端通过网络返回到客户端的数据量。但HBase中还有一些特性让用户甚至可以把一部分计算也移动到数据的存放端,那就是协处理器 (coprocessor)。

协处理器简介:

(节选自《HBase权威指南》)

使用客户端API,配合筛选机制,例如,使用过滤器或限制列族的范围,都可以控制被返回到客户端的数据量。如果可以更进一步优化会更好,例如,数据的处理流程直接放到服务器端执行,然后仅返回一个小的处理结果集。这类似于一个小型的MapReduce框架,该框架将工作分发到整个集群。

协处理器 允许用户在region服务器上运行自己的代码,更准确地说是允许用户执行region级的操作,并且可以使用与RDBMS中触发器(trigger)类似的功能。在客户端,用户不用关心操作具体在哪里执行,HBase的分布式框架会帮助用户把这些工作变得透明。

java代码如下:

public void rowCountByCoprocessor(String tablename){try {//提前创建connection和confAdmin admin = connection.getAdmin();TableName name=TableName.valueOf(tablename);//先disable表,添加协处理器后再enable表admin.disableTable(name);HTableDescriptor descriptor = admin.getTableDescriptor(name);String coprocessorClass = "org.apache.hadoop.hbase.coprocessor.AggregateImplementation";if (! descriptor.hasCoprocessor(coprocessorClass)) {descriptor.addCoprocessor(coprocessorClass);}admin.modifyTable(name, descriptor);admin.enableTable(name);//计时StopWatch stopWatch = new StopWatch();stopWatch.start();Scan scan = new Scan();AggregationClient aggregationClient = new AggregationClient(conf);System.out.println("RowCount: " + aggregationClient.rowCount(name, new LongColumnInterpreter(), scan));stopWatch.stop();System.out.println("统计耗时:" +stopWatch.getTotalTimeMillis());} catch (Throwable e) {e.printStackTrace();}
}

HBase 统计表中数据量相关推荐

  1. scala学习-scala读取Hbase表中数据并且做join连接查询

    1.业务需求:sparkSQL on hbase ,sparkSQL直接读取Hbase中的两个表,进行连接查询. 2.图示 绿色的线 上图中绿色的线是做过测试的,直接在hive中建表,然后load数据 ...

  2. hbase集群 数据写入_HBase架构与原理详解

    一.概述 HBase是基于列式存储的分布式数据库,底层存储采用的是LSM树,是Hadoop生态下核心技术之一. 1.1 架构图 1.2 组件介绍 HBase由三种类型的服务器以主从模式构成: Regi ...

  3. mysql查看比较大的数据表_mysql 如何查看哪些表数据量比较大

    数据库中有几十上百张表,那么哪些表的数据量比较大呢,总不能一个表一个表的去查询吧,在mysql中也有类似于oracle的数据字典表,只不过mysql没有oracle记录的那么多和详细,但也足够我们查询 ...

  4. mysql单张表数据量极限_极限数据量范围的安全测试

    mysql单张表数据量极限 When we develop security testing within inconsistent data volume situations, we should ...

  5. 大数据量10道面试题及解析

    大数据量10道面试题及解析 海量数据处理:十道面试题与十个海量数据处理方法总结 作者:July.youwang.yanxionglu. 时间:二零一一年三月二十六日 本文之总结:教你如何迅速秒杀掉:9 ...

  6. matlab 字数统计,matlab中数据及统计描述和分析.doc

    matlab中数据及统计描述和分析 第十章 数据的统计描述和分析 数理统计研究的对象是受随机因素影响的数据,以下数理统计就简称统计,统计是以概率论为基础的一门应用学科. 数据样本少则几个,多则成千上万 ...

  7. hbase shell查询表中某字段不为空的数据量_HBase工作原理

    HBASE原理 一.原理 1.物理存储 1.hregion hbase表中的数据按照行键的字典顺序排序,hbase表中的数据按照行的的方向切分为多个region. 最开始只有一个region随着数据量 ...

  8. 赋能云HBase备份恢复 百T级别数据量备份恢复支持

      云HBase发布备份恢复功能,为用户数据保驾护航.对大多数公司来说数据的安全性以及可靠性是非常重要的,如何保障数据的安全以及数据的可靠是大多数数据库必须考虑的.2016 IDC的报告表示数据的备份 ...

  9. (转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)...

    分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ...

最新文章

  1. vim 与系统剪切板
  2. linux的i o模型,I/O模型的分类及简介
  3. JavaScript 自执行函数和 jQuery扩展方法
  4. php7数据库备份还原,基于thinkphp的数据库在线备份还原
  5. 机器学习十大经典算法之朴素贝叶斯分类
  6. php提供的魔术常量
  7. 看动画轻松理解「链表」实现「 LRU 缓存淘汰算法」
  8. 写给创业者的四句金玉良言
  9. Radware;医疗行业数字转型5大关键注意事项
  10. 从零开始学Android!渣本毕业两年经验,附超全教程文档
  11. 典型微型计算机控制系统的实例,微型计算机控制技术
  12. 圈小猫游戏与天使问题——容错值理论
  13. 各大PT网站信息记录(不断更新中)
  14. 基于时域表示的序列数据分类方法(一)——基于距离度量的序列数据分类方法
  15. Poseidon(海神号)
  16. 测试小故事74:没有计划的日子
  17. 先有小米后有vivo,为何这届手机厂商接连“造芯”?
  18. 记录一个设备旁挂ikuai后收不到回包TTL为1的问题
  19. 赚钱本身就是人生目的
  20. 扩展欧几里德算法详解

热门文章

  1. c语言管程例子,管程
  2. java semaphore(0)_Semaphore
  3. Java响应式的框架和工具包:RxJava、Spring Reactor 和 Vert.x 概述
  4. 阿里巴巴开源组件Easy Excel的Excel导入导出
  5. python 计算圆形度。
  6. 实战SSM_O2O商铺_01项目介绍以及准备工作
  7. C++多态,虚函数作用及底层实现原理
  8. tess4j的简单使用doOCR
  9. Ubuntu18.04网络图标不见了 火狐浏览器找不到服务器
  10. FROM_UNIXTIME()和UNIX_TIMESTAMP()函数的区别