基于Hadoop平台的用户行为挖掘
2015-09-09曾志浩姚贝张琼林孙琪
曾志浩+姚贝+张琼林+孙琪
摘 要:随着互联网发展带来的数据爆炸,使得Web日志的数据量也越来越大,如何从海量的Web日志中挖掘有价值的信息成为了目前研究的热点。本文提出了基于Hadoop集群框架对Web日志进行挖掘。实验结果表明,该集群系统既可以处理海量的web日志,同时也能够挖掘出有价值的信息,并证实了利用sqoop在Hive仓库和传统数据库之间数据迁移的可行性。
关键字:Web日志;Hadoop;Sqoop;Hive;数据迁移
中图分类号:TP391 文献标识码:A
User Behavior Mining Based on Hadoop platform
Zeng Zhihao,Yao Bei, Zhang Qionglin,Sun Qi
(School of Computer and Communication, Hunan University of Technology, HuNan Zhuzhou 412000, China)
Abstract: As rapid development of Internet brings the data explosion,make web log data is becoming bigger and bigger, How from huge amounts of Web log mining valuable information become the focus of the present study.This paper presents based on the Hadoop cluster framework for Web log mining.Experimental results show that, this cluster system can processing massive web log data ,Also its can be mining valuable information. And confirmed the feasibility the data migration between Hive warehouse and traditional database by use sqoop.
Key words : Web log ; Hadoop ; Sqoop ; Hive ; Data migration
1 引言
互联网的快速发展,使得Web日志数据呈现出爆炸式的增长,这些海量的Web数据中蕴含了大量的信息,这些信息对企业而言是一笔巨额的财富,企业的发展需要这些数据提供更好的战略决策支持,因此对这些数据具有极大地挖掘需求;这使得从海量的Web数据中挖掘有用的信息成为了目前研究的热点,同时大规模的计算能力成为Web数据挖掘技术能否有效实现的外部需求[1]。
针对海量数据处理出现的技术问题,以Hadoop[2]为代表的新技术得到了国内外科技工作者的极大关注;Hadoop平台的最大优势是它实现了“计算靠近存储”的思想[3],此思想省去了海量数据网络传输的这一大开销,大大减少了数据处理时间,同时其并行化的数据处理方式非常适用于处理海量数据。
针对Hadoop分布式处理海量数据的优势,国内外一些学者纷纷对Hadoop平台进行了相关研究,文献[4]基于Hadoop平台,实现了对Web数据的并行化处理,提高了数据运行处理时间;文献[5]通过基于Hadoop平台,设计了一个用于处理海量搜索日志的分析平台;文献[1, 6]基于Hadoop平台进行了Web日志挖掘实验,并证实了Hadoop平台的可用性。
本文基于Hadoop平台首先对Web日志进行了数据清洗,根据数据挖掘的具体需要,过滤冗余、异常或者与挖掘目的无关的信息,然后通过HIVE数据仓库分析用户行为的关键指标,对Web日志数据进行用户行为挖掘,利用MySQL进行挖掘结果展示,同时利用了sqoop[7]组件在关系型数据库与非关系型数据库进行了数据迁移。
2 相关技术介绍
Hadoop是Apache软件基金会旗下的一个分布式计算平台。以Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)和MapReduce[8](Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构[2]。
对于Hadoop的文件系统HDFS具有高容错性的特点,它可以设计部署在低廉的硬件上,同时它可以通过提供高吞吐率来访问应用程序的数据。
MapReduce是一种编程模型,用于大规模数据集的并行运算,它主要以对数据进行映射(Map)、化简(Reduce)来实现计算,即MapReduce在执行时先指定一个Map(映射)函数,把输入键值对映射成一组新的键值对,经过一定处理后交给Reduce,Reduce对相同Key下的所有value进行处理后再输出键值对作为最终的结果。
Hive[9]是一个基于Hadoop文件系统之上的数据仓库架构,它为数据仓库的管理提供了许多功能:数据ETL(抽取、转换和加载)工具、数据存储管理和大型数据集的查询和分析能力;同时Hive定义了类SQL的语言—Hive QL。
HBase是一种NoSQL存储数据库,它可以用来快速随机读写大规模数据,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价机器上搭建起大规模结构化存储集群[10]。HBase利用HDFS作为其文件存储系统,利用MapReduce来处理HBase中的海量数据,利用Zookeeper作为协调工具。
Zookeeper是Google的Chubby一个开源的实现,是一个为分布式应用所设计的开源协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务、配置维护和命名服务等;用户可以使用Zookeeper提供的接口方便地实现一致性、组管理、leader选举及某些协议,同时Zookeeper不仅可以为单机提供服务,同时也支持多机组成集群来提供服务。
Sqoop[7]是“SQL to Hadoop”的缩写,是一款用于在Hadoop系统和结构化数据存储系统间进行数据交换的软件,它可以用于将传统数据库(如MySQL、Oracle)中的数据导入HDFS由MapReduce程序或Hive工具使用,并支持将处理后的结果数据导出到传统关系型数据库中[11]。
3用户行为挖掘的关键指标介绍
浏览量PV:页面浏览量即为PV(Page View),是指所有用户在该网站浏览页面的总和,一个独立用户每打开一个页面就被记录1次;对于网站总浏览量,其可以作为考核用户对于网站的兴趣。同时对于网站运营者来说,更重要的是网站每个栏目下的浏览量。
注册用户数:每一天网站新注册的用户人数;运营者通过对注册用户数分析可以查看出网站推广状况。
IP数:一天之内,访问网站的不同的独立IP 个数总和;其中同一IP无论访问了几个页面,独立IP 数均为1。
跳出率:只浏览了一个页面便离开了网站的访问次数占总的访问次数的百分比,即只浏览了一个页面的访问次数 / 全部的访问次数汇总;跳出率是非常重要的访客黏性指标,它显示了访客对网站的兴趣程度,即跳出率越低说明流量质量越好,访客对网站的内容越感兴趣,这些访客越可能是网站的有效用户、忠实用户;该指标也可以衡量网络营销的效果,指出有多少访客被网络营销吸引到宣传产品页或网站上之后,又流失掉的人数。
4用户行为挖掘的平台设计
日志采集模块:负责将各个前端web服务器中的日志传送到日志接收节点上。这里可以采用每天定时的将各个服务器中的日志传送到接收节点。对于日志服务器数据较小时,接收节点可以通过shell命令直接将日志数据上传到HDFS中;如果日志服务器非常多,数据量大时,可使用flume进行数据处理。
日志清洗模块:通过Hadoop的编程框架MapReduce对上传到HDFS的原始数据进行清洗;具体工作可分为两个阶段:Map阶段和Reduce阶段。这两个阶段分别用两个函数来表示,即Map函数和Reduce函数。Map函数接收一个<key,value>形式的输入,然后产生同样为<key,value>形式的中间输出,Hadoop会负责将所有具有相同中间key值的value集合到一起传递给Reduce函数,Reduce函数接收一个如<key,(list of values)>形式的输入,然后对这个value集合进行处理并输出结果,Reduce的输出也是<key,value>形式的。
分别将三个<key,value>对标记为<k1,v1>、<k2,v2>、<k3,v3>,以上数据处理流程可用图1表示:
图1 MapReduce程序数据变化的基本模型
查询分析模块:将清洗后的数据导入到Hive中,使用Hive对清洗后的数据进行多维分析;并且将Hive返回的查询结果以某种形式表现出来,供用户查看。用户可在浏览器客户端上输入或选择需要查询的内容。
结果显示模块:使用Sqoop将Hive中产生的分析结果导出到MySQL数据库中;如果用户需要查看详细数据,可以使用HBase数据库进行展示。
图2所示的是整个系统的架构图。
图2 系统架构图
5实验结果分析
为了测试系统,我们在测试平台上做了实验,分别利用几组大小不同的数据分别在单机情况下和在集群情况下进行了数据清洗时间消耗测试。
1 实验环境。本测试平台实验环境中,单机配置为:处理器类型,Intel(R) Core(TM)2 Duo CPU E7500 @2.93GHz,内存容量为2GB。集群配置是由三台与单机配置相同的服务器组成,其中,一台服务器是主节点,另外两台服务器是从节点;同时使用了Zookeeper组件对集群进行了协调服务管理。在集群中所有的服务器都运行在CentOS-6.4操作系统上,同时每台服务器均安装了hadoop-1.1.2和jdk-6u24-linux-i586和zookeeper-3.4.5,在三台服务器中,主节点安装了Hive-0.9.0、MySQL数据库和Sqoop-1.4.3.bin_hadoop-1.0.0。本实验通过配置Eclipse的Hadoop应用开发环境进行程序开发的。
2 实验数据及内容。本实验的数据来自于某论坛服务器上的日志数据。实验通过对论坛日志数据处理分析,来计算论坛关键指标,即浏览量、注册用户数、IP数、跳出率,最后通过对关键指标分析,进行用户行为挖掘,将挖掘结果提供给运营者运营决策。
实验一 通过五组不同数据量大小的日志作为输入,并统计出每组分别在Hadoop集群和传统的基于单机模式下的数据清洗所消耗的时间,其结果如图3所示。
图3 单机与集群对比
实验二 分别在集群计算节点为1、2、3时对同一个Web日志进行数据清洗处理,并分别统计数据清洗所消耗的时间;其结果如图4所示。
图4 节点个数不同对执行时间的影响
3 实验结果分析。通过实验一结果分析,我们可以知道,如果数据量小于40M时,Hadoop集群无法发挥其分布式处理海量数据的优势,甚至其所消耗的时间大于单机处理所消耗的时间。但是,当要处理的日志数据达到50M以上时,Hadoop集群的并行化处理优势会随着数据量的增加而显示出来。通过实验二结果分析可知,对于同一数据量,随着集群中计算节点的数量增加,数据清洗所消耗的时间明显减少。
6结论
针对目前单机环境下无法处理海量Web数据的问题,本文提出了基于Hadoop平台的集群环境下处理海量Web数据的问题,利用Hadoop集群的并行化处理海量数据的优势,解决了单机模式下数据处理效率低下且无法解决海量数据的问题。本文通过利用Hadoop集群环境,对Web日志数据进行了相关数据清洗,得到运营者需求的关键指标;同时利用sqoop组件在Hive数据仓库和Mysql数据库中进行数据迁移,大幅度提高了数据迁移效率,同时对处理关系型数据库中的数据向非关系型数据库中的数据迁移提供了一定参考价值。
参考文献
[1] 李彬,刘莉莉.基于 MapReduce 的 Web 日志挖掘[J].计算机工程与应用,2012,48(22): 95-98.
[2] 陆嘉恒. Hadoop 实战[M].北京:机械工业出版社,2012:2-7.
[3] 朱湘,金松昌,贾焰. 一种基于 Hadoop 平台的海量 Web 数据挖掘系统研究与实现[C]//张新生.中国通信学会--第九届中国通信学会学术年会论文集. 北京:北京邮电大学出版社,2012:72-76.
[4] 顾涛. 基于 Hadoop的Web信息提取和垃圾信息过滤研究与实现[D]. 成都:电子科技大学,2012.
[5] 赵龙. 基于hadoop的海量搜索日志分析平台的设计和实现[D]. 大连:大连理工大学,2013.
[6] 程苗,陈华平.基于Hadoop的Web日志挖掘[J].计算机工程,2011,37(11):37-39.
[7] Ting K, Cecho J J. Apache Sqoop Cookbook[M]. " O'Reilly Media, Inc.", 2013.
[8] Dean J, Ghemawat S. MapReduce: simplified data processing on large clusters[J]. Communications of the ACM ,2008, 51(1): 107-113.
[9] Thusoo A, Sarma J S, Jain N, et al. Hive: a warehousing solution over a map-reduce framework[J]. Proceedings of the VLDB Endowment, 2009, 2(2): 1626-1629.
[10] George L. HBase: the definitive guide[M]. " O'Reilly Media, Inc.", 2011.
[11] 陆嘉恒. 大数据挑战与NoSQL数据库技术[M]. 北京:电子工业出版社,2013.