学习地址:http://blog.linezing.com/?p=959
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应用角度来看,可以分为两个不同的方向:
第一种方向,将HBase视为一个可靠可用的容量巨大的Key-Value存储系统,使用HBase的作用很简单,就是将其作为一个黑匣子来使用,按照之前设计好的表结构来存储具有稀疏结构的数据。基于这种思路,如果HBase无法完全满足业务的需求,就在应用程序层次做一些设计或者优化工作,以最终满足业务的需求。
第二种方向,由于HBase是开源的,所以可以对HBase本身机制进行完善与扩展,最终形成一个能够满足业务需要的稳定可用的HBase版本。
3. 问题的解决思路
针对第2节中提到的在使用HBase进行累加计算的操作(求SUM/AVG)时的问题,下面给出几种解决问题的思路与方法。
基于第一种方向:
HBase服务端进行聚合计算,这样应用程序的查询端不必请求HBase响应大量数据进行传输,而只是在服务端计算后的结果,因此能够满足实时响应的需求。
基于第二种方向:
在HBase表设计时,加入一个空列专门用于统计所用,这样可以减少从HBase服务端到查询端的数据传输量。
应用程序端计算:
a) 入库端:在HBase表设计时,加入一个专门用于存储PV/UV这样累加结果的表,每次新来一条数据时,首先查询HBase表中上次记录下来的PV/UV数,然后判断是否加1后,再重新写回HBase表中相应key下。通过这种方式,查询端就可以直接通过HBase的一次get操作得到PV/UV。
b) 查询端:在查询端加入PV/UV的缓存,下一次查询请求来的时候,在已缓存PV/UV值的基础上,加上扫描HBase表中新增行的记录数(缓存更新的时间周期足够短的话,新增数会比较小,对HBase的查询响应会很快)。
学习了Hbase可以对大量的离线的日志数据统计,希望以后能有机会再工作中实践到。
相关推荐
它利用Apache Spark Streaming、Kafka以及HBase构建了一个日志统计分析系统,旨在实现实时的数据摄入、处理和存储。以下是这个系统涉及的关键知识点: 1. **Apache Spark**:Spark是用于大规模数据处理的开源框架,...
1. **案例驱动教学**:课程采用真实项目作为教学案例,如图片服务器、WordCount、HBase微博系统、话单查询与统计、Hive数据统计等,让学员在实践中学习和理解Hadoop。 2. **掌握Hadoop三大核心**:MapReduce、HBase...
大数据分析涵盖统计分析、预测建模、数据挖掘等,学习者将学习使用Pig、Hive、Spark SQL进行数据清洗、转换和分析,并利用Mahout或Spark MLlib进行机器学习。 5. **大数据存储与管理**: 学习者将了解HDFS的存储...
5. **大数据分析**:包括统计分析、机器学习和人工智能。学习Python(Pandas, Numpy, Scikit-learn等库)和R语言,可以帮助进行数据预处理、建模和预测。 6. **数据可视化**:通过Tableau、Power BI或Python的...
课程不仅涵盖数理统计和软件开发知识,还强调实践操作,以提升学员的数据洞察力和问题解决能力。 三、课程目标 课程的主要目标是让学员能够运用分析方法解决实际问题,通过具体项目实现理论与实践的结合。具体包括...
9. 具备数据建模(如机器学习、数据挖掘、信息检索)和分析理论知识。 10. 熟悉Linux平台的大数据存储和分布式计算,如Hadoop、HBase、NoSQL数据库等。 11. 熟悉互联网行业,了解其业务特性和数据需求。 总的来说,...
这包括统计分析、机器学习、数据建模等技术,以及使用工具如Python、R、SQL进行数据预处理和模型训练。该岗位需要理解业务需求,能通过数据洞察推动业务发展。 "大数据典藏版合集-datafun-202107(1).pdf"可能包含了...
### 大数据与数据仓库基础知识 #### 一、大数据数据仓库概述 大数据数据仓库是用于存储、管理和分析大规模数据集的系统。随着信息技术的发展,企业需要处理的数据量日益增大,传统的关系型数据库难以满足需求。...
10. **概率论**和**数理统计**:构建统计模型的基础,理解随机变量、概率分布、统计推断等概念。 11. **C 语言程序设计**和**Python 数据分析**:掌握至少一种编程语言,用于实现数据处理和分析任务。 12. **数据...
最后,大数据分析引擎结合业务特性、算法和数学理论,提供实时分析、离线统计、机器学习等多种分析功能。这涵盖了从基础的日志分析到复杂的供应链分析、个性化推荐系统和互联网金融征信等应用场景。分析结果通过可视...
5. **Hive数据仓库基础使用**:教授如何在Hive中进行数据仓库的基本操作,如创建仓库、创建表、删除表、导入导出数据以及统计查询。 课程分为六个章节,涵盖大数据的概述、开发思路与环境配置、HDFS、MapReduce、...
实验手册会深入到大数据的分析层面,涵盖统计分析、机器学习和数据挖掘等方法。学员将学习使用Pig(数据流处理工具)、Spark SQL和MLlib(机器学习库)进行数据探索、建模和预测。 六、大数据可视化 数据可视化是...
学生应能解释不同类型的NoSQL数据库如何适应大数据场景,并理解数据仓库与数据湖的区别和应用场景。 在数据处理与分析方面,学生需要熟练掌握SQL查询语言,用于数据提取、转换和加载(ETL)过程。同时,需要理解...
8. **大数据项目实战**:理论学习后,通过实际项目来巩固知识,提高解决实际问题的能力。 对于想要学习大数据开发的人来说,参加专业的大数据培训课程是较为有效的途径,尤其是对于技术门槛较高的大数据技术而言。...
3. Hadoop生态系统:除了HDFS和MapReduce,Hadoop还有许多相关项目,如HBase(分布式数据库)、Hive(数据仓库工具)、Pig(数据分析平台)、Spark(快速、通用的大数据处理引擎)。这些工具通常与Hadoop配合使用,...
1. 大数据技术栈:包括Hadoop、Spark、Hive等分布式计算框架,以及NoSQL数据库如HBase、Cassandra等,它们在大数据处理中的作用和应用场景。 2. 数据分析基础:涵盖统计学基础,如描述性统计、推断性统计,以及常用...
6. 应用统计学与R语言建模:结合统计学理论,学习如何使用R语言进行数据分析,包括描述性统计、概率分布、回归分析、时间序列预测和聚类分析等。 7. 服务端技术原理与应用(Java):探讨服务器端开发技术,可能涉及...
通过学习这本书,读者不仅可以理解用户画像的理论框架,还能掌握实际操作中的技术和策略,为业务发展提供有力的数据支持和决策依据。无论是初创公司还是成熟企业,都可以从中汲取经验,构建或优化自己的用户画像系统...