1. 数据统计的需求

互联网上对于数据的统计,一个重要的应用就是对网站站点数据的统计,例如CNZZ站长统计、百度统计、Google Analytics、量子恒道统计等等。

网站站点统计工具无外乎有以下一些功能:

1)网站流量统计:包括PV、UV、IP等指标,这些统计指标可以以趋势图的形式展示出来,如最近一周、最近一个月等。

2)IP来源信息统计:记录各个来源IP下的访问PV数。

3)访问来源分析:记录访客是从哪些途径到达本网站的。

4)搜索引擎及搜索关键词分析:对于各个指定搜索引擎带来访问PV的变化及趋势进行分析;对不同时段内访客搜索关键词的流量趋势进行统计。

5)访问地区分析:统计不同时间段内各地区的PV浏览量、UV访客数的变化趋势。

6)最近访客流水:实时显示网站当前的被访问情况,包括访问时间、IP地址、来源网址、访问网址和来源地区等。

从统计的角度来看,这些业务功能的需求可以概括为:

1)各项统计指标的计算,如PV、UV、IP等,可以归结为的对一条一条数据求SUM、AVG等操作。

2)统计需求越来越要求实时性,访问来源随时随地发生,来源途径多样化。对于这类需求,不需要统计计算,而是要经过预处理后快速向用户展示其关心的数据。

3)可以将数据统计分为两部分来理解:一部分是对于实时数据的统计,动态展示站点的访问数据更新情况;另一部分是对于历史数据的统计,如用于各项报表分析。

2. HBase的实现思路

HBase是一个分布式的存储系统,可以很容易在廉价PC上搭建其大规模存储系统,用于存储海量数据,这使得HBase适合于作为站点数据统计工具的存储系统。

1)对于实时数据的统计,HBase能够提供较低延迟的读写访问,承受高并发的访问请求;而对于历史数据的统计,HBase则可以被视为一个巨大的Key-Value存储系统,用于存储各个网站上历史的访问信息,用于做离线的数据分析与报表生成。

2)对于像PV、UV、IP这样需要求累加计算的操作(求SUM/AVG),由于要对HBase表中相关记录进行扫描求和计算,所以如果被统计站点的数据量很大的话,使用HBase来做可能会保证不了很快的响应速度。也就是说,从前端发出一个查询请求到最终结果的响应,时间会比较长(超过1秒或更长)。对于这个问题,将在第3节进行讨论。

3)对于像站点访客流水信息这样的实时数据展示,则比较适合于使用HBase来做,只要我们设计了合理的key,那么在根据key取单条访问记录时响应速度会很快。

下面是一个使用HBase作为存储系统的结构示意图:

其中,HBase服务端就是指HBase集群,应用程序分别通过入库端与查询端对HBase进行写操作与读操作。

从HBase应用角度来看,可以分为两个不同的方向:

1)第一种方向,将HBase视为一个可靠可用的容量巨大的Key-Value存储系统,使用HBase的作用很简单,就是将其作为一个黑匣子来使用,按照之前设计好的表结构来存储具有稀疏结构的数据。基于这种思路,如果HBase无法完全满足业务的需求,就在应用程序层次做一些设计或者优化工作,以最终满足业务的需求。

2)第二种方向,由于HBase是开源的,所以可以对HBase本身机制进行完善与扩展,最终形成一个能够满足业务需要的稳定可用的HBase版本。

3. 问题的解决思路

针对第2节中提到的在使用HBase进行累加计算的操作(求SUM/AVG)时的问题,下面给出几种解决问题的思路与方法。

基于第一种方向:

1)HBase服务端进行聚合计算,这样应用程序的查询端不必请求HBase响应大量数据进行传输,而只是在服务端计算后的结果,因此能够满足实时响应的需求。

基于第二种方向:

1)在HBase表设计时,加入一个空列专门用于统计所用,这样可以减少从HBase服务端到查询端的数据传输量。

2)应用程序端计算:

a) 入库端:在HBase表设计时,加入一个专门用于存储PV/UV这样累加结果的表,每次新来一条数据时,首先查询HBase表中上次记录下来的PV/UV数,然后判断是否加1后,再重新写回HBase表中相应key下。通过这种方式,查询端就可以直接通过HBase的一次get操作得到PV/UV。

b) 查询端:在查询端加入PV/UV的缓存,下一次查询请求来的时候,在已缓存PV/UV值的基础上,加上扫描HBase表中新增行的记录数(缓存更新的时间周期足够短的话,新增数会比较小,对HBase的查询响应会很快)。

4. 总结的话

这里是在使用HBase进行数据统计应用中的一些经验总结,其中对于提到问题的解决思路,有过一些尝试,欢迎讨论。

http://www.cnblogs.com/panfeng412/archive/2011/11/19/hbase-application-in-data-statistics.html

HBase在数据统计应用中的使用心得相关推荐

  1. SpringBoot整合HBase将数据写入Docker中的HBase

    在之前的项目里,docker容器中已经运行了HBase,现将API操作HBase实现数据的增删改查 通过SpringBoot整合Hbase是一个很好的选择 首先打开IDEA,创建项目(project) ...

  2. oracle学习数据,oracle学习中的一些心得

    当前位置:我的异常网» 数据库 » oracle学习中的一些心得 oracle学习中的一些心得 www.myexceptions.net  网友分享于:2015-08-26  浏览:10次 oracl ...

  3. 通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据

    通过Sqoop实现Mysql / Oracle 与HDFS / Hbase互导数据\ 下文将重点说明通过Sqoop实现Mysql与HDFS互导数据,Mysql与Hbase,Oracle与Hbase的互 ...

  4. 离线分析:Flume+Kafka+HBase+Hadoop通话数据统计

    文章目录 项目背景 项目架构 系统环境 系统配置 框架安装 JDK Hadoop Zookeeper Kafka Flume HBase 项目实现 项目结构 表设计 HBase Mysql 功能编写 ...

  5. HBase 在京东人资数据预处理平台中的实践!

    背景 人资绩效系统数据预处理平台,负责接收所有上游业务量数据.具有数据量大.非结构化数据.更新单个业务量数据,查询性能要求高等特性.通常技术上可以选择OSS.MySql数据库.ES等存储方案.其中OS ...

  6. delhpi7 tcombobox清楚重复项_专利数据统计中需要搞清楚的首要问题(2)

    上一篇专利数据统计中需要搞清楚的首要问题(1)介绍了通过合并申请号避免重复统计,理清了专利篇数和专利件数的问题,那么还有一类统计就是对发明项数的统计,这里就涉及到对同一项发明的重复统计问题.上一篇介绍 ...

  7. avg最多用多少列 mysql_MySQL_MySQL中几种数据统计查询的基本使用教程,统计平均数 SELECT AVG() FROM 语 - phpStudy...

    MySQL中几种数据统计查询的基本使用教程 统计平均数SELECT AVG() FROM 语法用于从数据表中统计数据平均数. 语法: SELECT AVG(column) FROM tb_name 该 ...

  8. excel如何晒出重复数据_3秒找出Excel中的重复数据,年底数据统计用得上,赶紧码住...

    职场人经常会碰到数据核对的任务,特别是在月底和年末,老板索要数据统计结果时,你总得检查一遍再交上去吧. 如果你对 Excel 中的基本功能不熟悉,就很可能碰到和这位妹子一样的难题: 遇到上面这种情况该 ...

  9. mysql中如何统计数据_mysql中的数据统计方法

    1 数据统计 使用COUNT()函数计算表中的数据数目(比如emp表中的员工数目) mysql> select count(*) from emp; 查询结果如下: +----------+ | ...

最新文章

  1. MVC Filter自定义异常(拦截)
  2. wpf c 登录注册 mysql代码代码_Wpf+数据库代码封装+策略模式封装
  3. H∞控制的simulink仿真
  4. 计算机基础原理知识,计算机基础知识之计算机的工作原理
  5. 快速实现一个分布式定时器
  6. openstack horizon dashboard_陕西高校邦OpenStack云平台实践章节答案
  7. 产品做得差,总是有人骂
  8. 谁是应用软件商店急需的外援
  9. 计算机基础知识及键盘熟悉实验报告,微型计算机组成和键盘操作 实验报告
  10. WinAPI 多线程(一)
  11. 使用three.js创建粒子火焰效果
  12. open-flash-chart 与 FusionCharts 开发中使用(转)
  13. 基于51单片机及DS18B20温度传感器数码管显示程序
  14. 如何处理电脑长时间未操作出现的假死?
  15. 10.cocos2d坐标系
  16. 正则表达式匹配整行和注释
  17. 学校计算机申请报告,【体育器材申请报告】_学校体育器材申请报告格式及范文...
  18. 《白日梦想家》影评笔记
  19. 一文弄懂halcon例程:rim.hdev
  20. 四月数据库排行榜出炉 Oracle、MySQL依然坚挺

热门文章

  1. 青少年成长管理 第03章 成长目标
  2. 这才是大学生必备软件 | 知识管理
  3. php连接firebird_PHP: Firebird/InterBase - Manual
  4. Word 里文字对齐4种方法推荐
  5. 非黑!也不是刺激战场粉!我来说说我用安卓模拟器玩全军出击那些事儿
  6. 当腾讯会议提示“未检测到可用摄像头,请插入设备后重试”并且在设备管理器中没有发现摄像头驱动
  7. 极品飞车9+快捷键+作弊器
  8. winapi获取和修改camera raw界面元素数据
  9. word文档打字时会消掉后面字
  10. Windows Vista Upgrade Advisor v1.0 - Windows Vista升级顾问(更新简体中文版)