`
san_yun
  • 浏览: 2638750 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

HBase性能优化2—使用Coprocessor进行RowCount统计

 
阅读更多

http://www.binospace.com/index.php/make-your-hbase-better-2/

关键词:AggregationClient

 

对于Table内RowKey个数的统计,一直是HBase系统面临的一项重要工作,目前有两种执行该操作的方式。

1)使用MapReduce进行。可以借助HTableInputFormat实现对于Rowkey的划分,但是需要占用资源,另外由于使用的Hadoop集群提交作业,经常会遇到不能申请到资源的情况,延迟较大,不适合应用的频繁访问。

2)使用Scan+KeyOnlyFilter的方式进行。可以借助Filter的功能,尽可能实现数据在RegionServer端进行统计,减轻Client端的压力。但是,在大多数情况下,从每一个Region上进行Scan,当Table较大时,会造成非常长的延迟,用户体验下降。

基于此,我们考虑到了Coprocessor这样的新特性。

操作上,HBase-0.92.1提供了
org.apache.hadoop.hbase.coprocessor.AggregateImplementation,我们需要对于某一个Table注册该Coprocessor,具体做法为:

?View Code JAVA
 
      String coprocessClassName = "org.apache.hadoop.hbase.coprocessor.AggregateImplementation";
 
        HBaseAdmin admin = new HBaseAdmin(HBaseConfiguration.create());
 
        admin.disableTable(tableName);
 
        HTableDescriptor htd = admin.getTableDescriptor(tableName);
 
        htd.addCoprocessor(coprocessClassName);
 
        admin.modifyTable(tableName, htd);
 
        admin.enableTable(tableName);

然后执行的代码如下:

         Scan s = new Scan();

        s.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("c1"));

        AggregationClient ac = new AggregationClient(HBaseConfiguration.create());

        try {

            return ac.rowCount(tableName, new LongColumnInterpreter(), s);

        } catch (Throwable e) {

            // TODO Auto-generated catch block

           e.printStackTrace();

        }
        return 0;

为了统计使用Scan增加KeyOnlyFilter和Coprocessor之间的区别,记录了500次操作的时间,性能对比图如下:

从上图中,可以看出,大部分通过Coprocessor获取RowCount个数的延迟,小于1s,而使用Scan的方式,获得RowKeyCount的个数大概在4~5s。(备注,检查的table的Rowkey的个数在3w左右)。

那么究竟是什么原因让Coprocessor在统计Rowkey的个数上,拥有如此明显的优势呢?

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

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

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

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

分享到:
评论

相关推荐

    HBase性能优化方法总结

    然而,随着数据量的增长,如何进行有效的性能优化变得至关重要。本文将深入探讨HBase性能优化的各种策略,旨在帮助你提升数据操作的效率。 一、硬件优化 1. **磁盘选择**:HBase对I/O性能要求较高,因此推荐使用SSD...

    HBase Coprocessor 优化与实验

    通过上述介绍可以看出,HBase Coprocessor不仅能够显著提高HBase的灵活性和功能性,还能通过合理的优化措施进一步提升系统的整体性能。对于大型分布式系统而言,合理利用Coprocessor可以极大地改善用户体验,并为...

    Hadoop集群(第12期副刊)_Hbase性能优化

    ——HBase性能优化 1、从配置角度优化 1.1 修改Linux配置 Linux系统最大可打开文件数一般默认的参数值是1024,如果你不进行修改并发量上来的时候会出现“Too Many Open Files”的错误,导致整个HBase不可运行,你...

    HBase中Coprocessor的介绍以及实际业务场景中的使用.pdf

    讲师:陈杨——快手大数据高级研发工程师 ...内容概要:(1)讲解hbase coprocessor的原理以及使用场景,(2) coprocessor整个流程实战,包括开发,加载,运行以及管理(3)结合1,2分析coprocessor在rsgroup中的具体使用

    Hadoop2.7.1+Hbase1.2.1集群环境搭建(7)hbase 性能优化

    本篇将详细阐述如何在Hadoop 2.7.1环境下搭建HBase 1.2.1集群,并进行性能优化,以提升系统效率。 首先,我们需要了解Hadoop和HBase的基本概念。Hadoop是基于分布式文件系统HDFS(Hadoop Distributed File System)...

    hbase性能优化

    除了上述提到的优化方法,HBase的性能优化还可以涉及更多的方面,如合理调整HBase配置、分区和负载均衡策略、压缩和存储优化、监控和诊断等。在HBase集群中,还可能通过调整HMaster和HRegionServer的相关参数来...

    使用Hbase协作器(Coprocessor)同步数据到ElasticSearch(hbase 版本 1.2.0-cdh5.8.0, es 2.4.0 版本)

    2. **配置Coprocessor**:在HBase的表或列族配置中,添加Coprocessor的类路径和优先级。这样,每当有数据写入时,Coprocessor就会被触发执行。 3. **连接Elasticsearch**:在Coprocessor中,使用Elasticsearch的...

    HBase性能优化指南

    ### HBase性能优化知识点汇总 #### HDFS优化 - **存储机制**: HBase使用HDFS存储WAL(Write-Ahead Log)和HFiles。默认情况下,HDFS不会实时同步数据到磁盘,而是写入临时文件后移动到最终位置,导致在断电情况下...

    Hbase性能优化百科全书(csdn)————程序.pdf

    在HBase性能优化的过程中,表设计和RowKey的设计是至关重要的。预分区是表设计的一个重要环节,目的是避免因表的自动split导致的资源消耗和性能影响。预分区可以根据业务需求预先设定rowkey的范围,比如在例子中,...

    HBase写性能优化策略

    然而,随着数据量和访问量的增加,如何对HBase的写性能进行优化成为一个重要的议题。本文旨在提供一系列优化策略,以提高HBase的写入效率和数据写入的稳定性。 首先,要理解HBase写入数据的基本流程:数据首先顺序...

    hbase性能优化.pdf

    在HBase性能优化中,有两个关键的配置参数需要关注:`hbase.hregion.max.filesize`和`autoflush`设置。这些参数对HBase的写入性能、数据一致性和系统稳定性有显著影响。 1. `hbase.hregion.max.filesize`的设定: ...

    HBase最佳实践-读性能优化策略

    下面我们将根据标题和描述中提到的关于HBase读性能优化策略进行详细的知识点阐述。 首先,FullGC异常导致宕机问题、RIT问题、写吞吐量太低以及读延迟较大是HBase系统中常见的一些问题。FullGC异常主要是由于Java...

    HBase的性能优化

    "HBase性能优化" HBase是一种高性能的NoSQL数据库,广泛应用于大数据存储和处理领域。然而,HBase的性能优化是非常重要的,特别是在大规模数据集群环境中。以下是HBase性能优化的相关知识点: 启用LZO压缩 HBase...

    Hadoop 集群(第 12 期副刊)-HBase性能优化.pdf

    ### Hadoop集群(第12期副刊)-HBase性能优化 #### 一、从配置角度优化HBase性能 **1.1 修改Linux配置** Linux系统默认的最大可打开文件数通常设定为1024个,这对于大多数应用场景来说可能足够,但在高并发环境下...

    HBase性能深度分析

    本文将深入探讨HBase的性能测试细节,重点剖析数据插入性能,并通过实证分析揭示其背后的机制与优化策略。 #### 数据插入性能测试设计 在评估HBase的实时数据插入性能时,测试场景设计至关重要。以随机值的Rowkey...

    HBase-coprocessor.pptx

    《深入理解HBase Coprocessor:扩展与应用》 HBase Coprocessor 是一个强大的功能,它为HBase提供了一种扩展...在实际应用中,合理利用Coprocessor可以显著提升HBase的性能和功能,是优化HBase应用的关键技术之一。

    HBase最佳实践-读性能优化策略-3——HBase服务器端优化.pdf

    在HBase这样的分布式列式数据库中,读性能的优化至关重要,因为它直接影响到应用程序的响应速度和用户体验。本文主要探讨了HBase服务器端的读性能优化策略,这些策略可以帮助解决读延迟大、资源消耗高和负载不均衡等...

Global site tag (gtag.js) - Google Analytics