罗新
摘要:
在陶瓷行业信息聚合网站的基础上,通过Web日志分析可以获取网站用户的访问情况,但是随着Web服务器上日志的剧增,在单机上运行日志分析或挖掘程序变得越来越不可行。采用Hadoop并行计算平台对日志进行预处理,然后对页面访问量、用户访问量、网站流量等指标进行统计,还应用Apriori算法对日志进行挖掘,对群集在不同节点数、不同数据集以及不同最小支持度的情形下的性能进行比较。实验结果表明,在Hadoop平台上,随着集群节点的增加,大数据集处理性能会得到较大提升。应用Hadoop 平台构建的日志分析平台可以为陶瓷行业信息聚合平台的管理者提供各种有价值的信息。
关键词:Hadoop;Apriori;陶瓷信息系统
DOIDOI:10.11907/rjdk.173070
中圖分类号:TP319
文献标识码:A 文章编号:1672-7800(2017)012-0128-03
Abstract: Based on the development of the ceramic industry information aggregation website, User's access informationcan be obtained through Web log analysis. However, with the rapid increase of the logs on the Web server, it becomes more and more impossible to run log analysis or mining programs on a single computer Row. In this paper, Hadoop parallel computing platform for log pretreatment, and then page views, user traffic, website traffic and other indicators statistics, but also Apriori algorithm to log mining, the cluster in different nodes, different data sets and different Minimum support in the case of performance comparison. Experimental results show that the processing of large data sets on the Hadoop platform will be greatly enhanced with the increase of cluster nodes. The log analysis platform built using the Hadoop platform can provide valuable information to managers of the ceramic industry information aggregation platform.
Key Words:Hadoop; Apriori; ceramic information system
0 引言
Hadoop[1-2]平台实现了HDFS分布式文件系统,它具有高容错性的特点,而且可以部署在低端硬件上,提供高吞吐量的处理能力,适合处理超大数据集的应用程序。Hadoop框架最核心的设计是HDFS和MapReduce,HDFS为海量数据存储提供了物质基础,MapReduce为大数据提供了计算技术。
本文在一个陶瓷行业信息聚合平台的基础上,应用Hadoop技术,实现了网站访问日志的预处理、统计、挖掘等功能,为网站管理者提供了改进依据。
1 研究背景
陶瓷行业信息聚合平台网站是一个前端采用BootStrap框架,应用HTML5、AJAX、JQuery等相关技术,后台采用Struts+Hiberate+Spring框架技术的网站。系统功能包括用户注册与管理、陶瓷产品上架与展示、供求信息发布、各类信息搜索等功能。网站布局如图1所示。
系统后台数据库采用MySQL框架, 数据库设计了business_chances, product, news, category等表,分别对应供需信息、产品、新闻、产品类别等信息。
为了更深入了解网站访客的使用习惯,可以对网站访问日志进行分析。例如tomcat服务器上记录的访问日志的信息。
通过这些字段的统计分析,可以得到每个页面的访问、IP访问量与用户某个时段的访问量、用户来源,用户访问浏览器(设备)等指标的统计。通过对日志进行预处理后,形成一个用户访问事务文件,在Hadoop平台上应用并行化的挖掘算法[3-6],实现关联、聚类等分析。
2 Hadoop平台处理网站日志
2.1 日志处理模块
对于海量日志数据,如果用单机来进行统计分析、挖掘,处理效率将会降低。此时可以采用Hadoop平台[2],在集群上完成日志的分布式处理。日志分析/挖掘模块框架如图2所示。
日志分析及挖掘处理可以分为3个子模块。第一个模块是日志收集模块。日志收集模块主要负责定期把日志文件从Web应用服务器上传到集群的HDFS系统;然后在NameNode节点上启动Hadoop Job,完成日志文件的分片、分配Mappe及Reducer节点,执行完Job之后,把结果导出到MySQL, 用户可以在陶瓷信息聚合网站上查看统计或挖掘的结果。
日志收集模块可以采用Java编写GUI程序, 然后用Socket定期完成日志的上传。这种方式需要开发服务器端及客户端软件。日志上传客户端的界面如图3所示。
日志上传客户端运行在各个Web应用服务器上,可以进行服务器地址/端口、日志上传时间间隔、日志文件所在位置等参数的设置。日志上传服务器端具有帐户管理、日志预处理、Hadoop挖掘算法设置等功能。服务器端如图4所示。
2.2 日志统计分析
通过MapReduce进行日志统计的原理如下:在Mapper阶段进行每行日志的读取,以空格作为分隔符进行字段分割,再找到需要进行统计的字段。如统计一个页面的访问量,就应该找到request字段,然后获取里面的URL,最后以URL作为Key值,以1作为value值,向Context写入。在Reducer阶段,则以URL为key,对传进的value值集合的元素进行求和操作。最后就可以得到一个页面的总访问次数。代码如下所示:
Apriori算法[7-12]通常用于关联分析。对于陶瓷行业信息聚合平台网站,首先对日志进行预处理,删除用户访问无关数据;然后执行用户识别、会话识别;最后形成用户访问网站记录的事务集合。通过对事务集合的挖掘,可以得到关联规则,为用户提供产品或者页面推荐。
在开发Hadoop版本的Aprioir算法时,由于算法要进行迭代,每次迭代时会产生大量候选项集。在Hadoop平台上,每一次迭代运行都以一个Job任务形式进行,Job之间不能进行进程间的数据共享。所以应该把中间结果缓存到HDFS文件系统中,每一次新的迭代开始时,就把上一次迭代生成的候选项集读取到Job中,然后再计算频繁项集。下面代码解决了Apriori算法迭代中结果的存储问题。
3 实验结果分析及结果展示
如表2所示,从日志中截取2个数据集DataSet_8M和DataSet_80M,经过预处理后,每一行数据代表一个事务。其中DataSet_8M中有1万条事务记录,DataSet_80M有10万条记录。实验平台是Hadoop2.5.2,节点处理机Intel I7-4790 3.6G,内存5G。表2的数据是在Hadoop群集下运行Apriroir算法[3],在数据集大小、最小支持度、节点数的3个维度下,运行时间的比较。从运行时间来看,由于NameNode与DataNode的之间通信会消耗算法处理时间,所以算法在多节点群集下运行并无优势。但随着数据集的增大和最小支持度的降低(产生的候选项集会急剧增加),此时随着节点数增加,算法处理时间明显减少,从而达到较好的并行计算结果。
在网页上可以使用ECHARTS模块对统计数据用图表进行可视化显示,便于用户分析。IP访问量的排行榜如图5所示。
4 结语
本文在一个陶瓷行业信息聚合平台网站的基础上,引入Hadoop并行计算技术,对网站的日志进行分析及挖掘。在日志数据量不断增加的情况下,云计算技术处理优势会越来越明显。通过Hadoop技术对日志进行离线处理,将经过分析处理的数据存入数据库,从而方便用户使用。
参考文献:
[1] TOM WHITE. Hadoop权威指南[M]. 华东师范大学数据科学与工程学院.译.北京:清华大学出版社,2013.
[2] 陈吉荣.基于Hadoop生态系统的大数据解决方案综述[J].计算机工程与科学,2013,35(10):25-35.
[3] 程苗.基于Hadoop的Web日志挖掘[J].计算机工程,2011,37(11):37-39.
[4] 许抗震,吴云.基于Hadoop的网络日志挖掘方案的设计[J].现代电子技术,2017,40(9):115-120.
[5] 杨锋英,刘会超.基于Hadoop的在线网络日志分析系统研究[J].计算机应用与软件,2014(8):311-316.
[6] 姜开达,章思宇,孙强.基于Hadoop的校园网站日志系统的设计与实现[J].华东师范大学学报:自然科学版,2015(S1):126-131.
[7] 魏玲.基于Bigtable与MapReduce的Apriori算法改进[J].计算机科学,2015,42(10):208-210.
[8] 肖强,朱庆华.Hadoop环境下的分布式协同过滤算法设计与实现[J].现代图书情报技术,2013(1):83-89.
[9] 黄剑,李明奇,郭文强.基于Hadoop的Apriori改进算法研究[J].计算机科学,2017,44(7):262-269.
[10] 刘永增,张晓景,李先毅.基于Hadoop /Hive的web日志分析系统的设计[J].广西大学学报:自然科学版,2011(A1):314-317.
[11] 孙赵旭.基于Hadoop的Apriori算法与实现[J].桂林理工大学学报,2014,34(3):584-588.
[12] 王英博.基于Hadoop平台的改進关联规则挖掘算法[J].计算机工程,2016,42(10):69-74.
(责任编辑:刘亭亭)