当前位置: 首页 > news >正文

网站文字大小代码搜索引擎的四个组成部分及作用

网站文字大小代码,搜索引擎的四个组成部分及作用,wordpress 分类目录排序,改写 wordpress 插件背景: 对于其他数据存储系统来说,统计表的行数是再基本不过的操作了,一般实现都非常简单;但对于HBase这种key-value存储结构的列式数据库,统计 RowCount 的方法却有好几种不同的花样,并且执行效率差别巨大&…

背景:
对于其他数据存储系统来说,统计表的行数是再基本不过的操作了,一般实现都非常简单;但对于HBase这种key-value存储结构的列式数据库,统计 RowCount 的方法却有好几种不同的花样,并且执行效率差别巨大!下面来研究下吧~


测试集群:HBase1.2.0 - CDH5.13.0 四台服务器

注:以下4种方法效率依次提高


一、hbase-shell的count命令

这是最简单直接的操作,但是执行效率非常低,适用于百万级以下的小表RowCount统计!
在这里插入图片描述

 hbase> count 'ns1:t1'hbase> count 't1'hbase> count 't1', INTERVAL => 100000hbase> count 't1', CACHE => 1000hbase> count 't1', INTERVAL => 10, CACHE => 1000

此操作可能需要很长时间,来运行计数MapReduce作业。默认情况下每1000行显示当前计数,计数间隔可自行指定。

默认情况下在计数扫描上启用缓存,默认缓存大小为10行。

行数为 3000W 的表测试结果:

hbase(main):001:0> count 'sda_crm_calls20180102'

在这里插入图片描述
默认INTERVAL为1000行时花了80分钟。。

hbase(main):001:0> count 'sda_crm_calls20180102', INTERVAL => 1000000

在这里插入图片描述

INTERVAL为1000000行时花了130分钟。。


二、scan方式设置过滤器循环计数(JAVA实现)

这种方式是通过添加 FirstKeyOnlyFilter 过滤器的scan进行全表扫描,循环计数RowCount,速度较慢! 但快于第一种count方式!

基本代码如下:
public void rowCountByScanFilter(String tablename){long rowCount = 0;try {//计时StopWatch stopWatch = new StopWatch();stopWatch.start();TableName name=TableName.valueOf(tablename);//connection为类静态变量Table table = connection.getTable(name);Scan scan = new Scan();//FirstKeyOnlyFilter只会取得每行数据的第一个kv,提高count速度scan.setFilter(new FirstKeyOnlyFilter());ResultScanner rs = table.getScanner(scan);for (Result result : rs) {rowCount += result.size();}stopWatch.stop();System.out.println("RowCount: " + rowCount);System.out.println("统计耗时:" +stopWatch.getTotalTimeMillis());} catch (Throwable e) {e.printStackTrace();}
}

耗时45分钟!


三、利用hbase.RowCounter包执行MR任务

这种方式效率非常高!利用了hbase jar中自带的统计行数的工具类!

通过 $HBASE_HOME/bin/hbase 命令执行:

[root@cdh1 ~]# hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'sda_crm_calls20180102'

在这里插入图片描述
在这里插入图片描述

耗时1m40s,速度较上面两种有了质的飞跃!


四、利用HBase协处理器Coprocessor(JAVA实现)

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

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

协处理器简介:

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

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

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

实现代码:

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();}
}

在这里插入图片描述
发现只花了 23秒 就统计完成!

为什么利用协处理器后速度会如此之快?

Table注册了Coprocessor之后,在执行AggregationClient的时候,会将RowCount分散到Table的每一个Region上,Region内RowCount的计算,是通过RPC执行调用接口,由Region对应的RegionServer执行InternalScanner进行的。

因此,性能的提升有两点原因:

1.分布式统计。将原来客户端按照Rowkey的范围单点进行扫描,然后统计的方式,换成了由所有Region所在RegionServer同时计算的过程。

2.使用了在RegionServer内部执行使用了InternalScanner。这是距离实际存储最近的Scanner接口,存取更加快捷。

http://www.yidumall.com/news/75591.html

相关文章:

  • 做一个色流网站怎么做谷歌seo什么意思
  • 淘宝在哪个网站做推广最好最全的搜索引擎
  • 校园网站建设需要哪些百度收录查询代码
  • 做网站的宽和高有限制吗浙江seo博客
  • 坪山网站建设策划哪家网络推广好
  • 企业网站建设需要考虑内容重庆seo扣费
  • java做网站微信公众选件济南网站建设方案
  • 南京小程序外包公司seo是什么品牌
  • mysql 大型网站开发sem托管公司
  • 横岗做网站广告代理商
  • 常州网站建设企业网站南京百度网站快速优化
  • 做网站可以做哪些方面的网站建设网站定制
  • 网站做备案网络营销心得体会1000字
  • 微软云怎么做网站世界足球排名最新
  • 社交网站上的商城怎么做seo门户网站优化
  • 临沂网站建设中企动力谷歌广告
  • 网站开发的完整流程seo外包公司
  • 交友网站有人做加拿大28广州番禺最新发布
  • 化妆品网站建设策划方案淘宝seo排名优化的方法
  • 学校网站建设作用最有效的推广学校的方式
  • 加快实施创新驱动发展战略杭州seo网站推广
  • 防城港做网站的西安网站制作工作室
  • 建设投资公司网站网销怎么做才能做好
  • 网站模板开发平台怎么做优化网站关键词
  • 政府查询网站建设方案青岛网站建设策划
  • 搭建公司青岛网络优化厂家
  • 英文网站建站模板seo建站需求
  • 长沙网站改版百度seo白皮书
  • 怎么查询菠菜网站做没作弊新东方考研班收费价格表
  • 长宁网站建设重庆seo推广运营