`
乡里伢崽
  • 浏览: 108798 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

HBase性能优化方法总结(四):数据计算

阅读更多
HBase性能优化方法总结(四):数据计算

本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法。有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客。

下面是本文总结的第四部分内容:数据计算相关的优化方法。
4. 数据计算
4.1 服务端计算

Coprocessor运行于HBase RegionServer服务端,各个Regions保持对与其相关的coprocessor实现类的引用,coprocessor类可以通过RegionServer上classpath中的本地jar或HDFS的classloader进行加载。

目前,已提供有几种coprocessor:

    Coprocessor:提供对于region管理的钩子,例如region的open/close/split/flush/compact等;
    RegionObserver:提供用于从客户端监控表相关操作的钩子,例如表的get/put/scan/delete等;
    Endpoint:提供可以在region上执行任意函数的命令触发器。一个使用例子是RegionServer端的列聚合,这里有代码示例。

以上只是有关coprocessor的一些基本介绍,本人没有对其实际使用的经验,对它的可用性和性能数据不得而知。感兴趣的同学可以尝试一下,欢迎讨论。
4.2 写端计算
4.2.1 计数

HBase本身可以看作是一个可以水平扩展的Key-Value存储系统,但是其本身的计算能力有限(Coprocessor可以提供一定的服务端计算),因此,使用HBase时,往往需要从写端或者读端进行计算,然后将最终的计算结果返回给调用者。举两个简单的例子:

    PV计算:通过在HBase写端内存中,累加计数,维护PV值的更新,同时为了做到持久化,定期(如1秒)将PV计算结果同步到HBase中,这样查询端最多会有1秒钟的延迟,能看到秒级延迟的PV结果。
    分钟PV计算:与上面提到的PV计算方法相结合,每分钟将当前的累计PV值,按照rowkey + minute作为新的rowkey写入HBase中,然后在查询端通过scan得到当天各个分钟以前的累计PV值,然后顺次将前后两分钟的累计PV值相减,就得到了当前一分钟内的PV值,从而最终也就得到当天各个分钟内的PV值。

4.2.2 去重

对于UV的计算,就是个去重计算的例子。分两种情况:

    如果内存可以容纳,那么可以在Hash表中维护所有已经存在的UV标识,每当新来一个标识时,通过快速查找Hash确定是否是一个新的UV,若是则UV值加1,否则UV值不变。另外,为了做到持久化或提供给查询接口使用,可以定期(如1秒)将UV计算结果同步到HBase中。
    如果内存不能容纳,可以考虑采用Bloom Filter来实现,从而尽可能的减少内存的占用情况。除了UV的计算外,判断URL是否存在也是个典型的应用场景。

4.3 读端计算

如果对于响应时间要求比较苛刻的情况(如单次http请求要在毫秒级时间内返回),个人觉得读端不宜做过多复杂的计算逻辑,尽量做到读端功能单一化:即从HBase RegionServer读到数据(scan或get方式)后,按照数据格式进行简单的拼接,直接返回给前端使用。当然,如果对于响应时间要求一般,或者业务特点需要,也可以在读端进行一些计算逻辑。
5. 总结

作为一个Key-Value存储系统,HBase并不是万能的,它有自己独特的地方。因此,基于它来做应用时,我们往往需要从多方面进行优化改进(表设计、读表操作、写表操作、数据计算等),有时甚至还需要从系统级对HBase进行配置调优,更甚至可以对HBase本身进行优化。这属于不同的层次范畴。

总之,概括来讲,对系统进行优化时,首先定位到影响你的程序运行性能的瓶颈之处,然后有的放矢进行针对行的优化。如果优化后满足你的期望,那么就可以停止优化;否则继续寻找新的瓶颈之处,开始新的优化,直到满足性能要求。

以上就是从项目开发中总结的一点经验,如有不对之处,欢迎大家不吝赐教。
分享到:
评论

相关推荐

    Hbase优化-参数优化

    本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法。1. 表的设计2. 写表操作3. 读表操作4. 数据计算

    HBase数据库检索性能优化策略

    HBase数据库是一个基于分布式的、面向列的、主要用于非结构化数据存储用途的开源数据库。其设计思路来源于Google的非开源数据库”BigTable”。HDFS为HBase提供底层存储支持,MapReduce为其提供计算能力,ZooKeeper为...

    Hbase 二级索引方案

    Lily HBase Indexer 使用 SolrCloud 来存储 HBase 的索引数据,当 HBase 执行写 入、更新或删除操作时,Indexer 通过 HBase 的 replication 功能来把这些操作抽象成一系 列的 Event 事件,并用来保证写入 Solr 中的 ...

    HBase 数据库检索性能优化策略

    HBase 数据表介绍  HBase 数据库是一个基于分布式的、面向列的、主要用于非结构化数据存储用途的开源数据库。其设计思路来源于 Google 的非开源数据库”BigTable”。  HDFS 为 HBase 提供底层存储支持,...

    HBase企业应用开发实战

    从如何用好HBase出发,首先介绍设计原理和应用场景,让读者了解HBase适合什么场景不适合什么场景,然后再介绍应用编程、性能优化和生产环境中的运维经验,可谓由浅入深,循序渐进,值得推荐!, —— 查礼 博士, 中国...

    基于Hadoop的Apriori算法研究与优化

    为解决传统数据挖掘算法在大量数据处理时面临的内存占用、计算性能等方面的问题,基于Hadoop平台,应用HBase文件存储系统对海量数据分布式存储以及Map Reduce框架进行分布式计算,实现Apriori经典数据挖掘算法。...

    基于大数据平台数据分析技术选型调研.pdf

    利⽤MapReduce计算引擎,提升了算法可处理的数据量和处理性能。 缺点: 1. 由于实现算法需要MR化,所以实现的算法相对较少 2. 学习资料较少,官⽹提供的相关⽂档并没有很详细的关于每个算法的使⽤教程。 3. 不⽀持...

    Hadoop大数据处理_刘军

    《Hadoop大数据处理》共10章涉及的主题包括大数据处理概论、基于Hadoop的大数据处理框架、MapReduce计算模式、使用HDFS存储大数据、HBase大数据库、大数据的分析处理、Hadoop环境下的数据整合、Hadoop集群的管理与...

    大数据发展历史.pdf

    分析型的数据库技术:Hive 、Impala 3、⼤数据索引和查询技术 4、实时流式⼤数据存储与处理技术 计算: ⾯临的问题:数据结构特征、并⾏计算(以分布式⽂件为基础的Hadoop\以分布式内存缓存为基础的Spa

    Spark分布式内存计算框架视频教程

    手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程简介 知识点介绍、代码演示、逻辑分析、灵活举例、...7.实时应用性能调优(数据本地性、反压机制、动态资源和日志管理)

    金融大数据服务平台解决方案.docx

    平台运维与监控:建立完善的平台运维和监控体系,确保大数据平台的稳定运行和性能优化。采用自动化运维工具和监控平台,对平台的资源使用情况、系统性能等进行实时监测和分析。同时,对故障进行及时预警和处理,保障...

    智能变电站海量在线监测数据处理方法

    该方法将变电站在线监测所收集的海量变电设备在线监测数据冗余存储在Hadoop分布式文件系统(HDFS)中,对在线监测数据的索引表结构进行优化,并存储在分布式结构化数据库(HBase)中,实现海量在线监测数据的快速...

    2013中国数据大会ppt(2)

    百度的下一代离线存储计算系统.pdf 主流开源NoSQL及分布式存储的应用与思考.pdf 腾讯在线交易平台统一数据层高一致性解决方案.pdf NoSQL一致性实践:我对CAP的一点认识.pdf MongoDB at Qihoo 360.pdf MySQL Cluster...

    大数据的存储管理技术.doc

    分布式文件系统的设计需要重点考虑可 扩展性、可靠性、性能优化、易用性及高效元数据管理等关键技术。 当前大数据领域中,分布式文件系统的使用主要以Hadoop HDFS为主。HDFS采用了冗余数据存储,增强了数据可靠性,...

    大数据学习计划.pdf

    HDFS(对于本⽂)的上⼀层是MapReduce 引 擎,通过对Hadoop分布式计算平台最核⼼的分布式⽂件系统HDFS、MapReduce处理过程,以及数据仓库⼯具Hive和分布式数据库Hbase 的介绍,基本涵盖了Hadoop分布式平台的所有技术核...

    Cloudera CDH大数据平台搭建参考手册

    Cloudera作为一个强大的商业版数据中心管理工具,提供了各种能够快速稳定运行的数据计算框架,如Apache Spark;使用Apache Impala做为对HDFS,HBase的高性能SQL查询引擎;也带了Hive数据仓库工具帮助用户分析数据; ...

    Hadoop实战(第2版)

    2.2.3 从数据库中拉数据技术点4 使用MapReduce 将数据导入数据库 技术点5 使用Sqoop 从MySQL 导入数据 2.2.4 HBase 技术点6 HBase 导入HDFS 技术点7 将HBase 作为MapReduce 的数据源2.3 将数据导出...

    Hadoop硬实战 [(美)霍姆斯著][电子工业出版社][2015.01]_PDF电子书下载 带书签目录 高清完整版.rar )

    技术点11 使用HBase 作为MapReduce 的数据接收器 2.4 本章小结 3 数据序列化――处理文本文件及其他格式的文件 3.1 了解MapReduce 中的输入和输出 3.1.1 数据输入 3.1.2 数据输出 3.2 处理常见的序列...

Global site tag (gtag.js) - Google Analytics