MapReduce技术在日志分析中的研究应用

计算机时代 / 2018年02月22日 16:13

新闻

林勇+吴翀+严盟+彭敏佳

摘 要: Hadoop技术的核心框架MapReduce非常适用于日志分析系统,并具有良好的易用性和可扩展性。文章将MapReduce的日志处理技术应用于某项目平台的日志数据分析中,以实验结果证明了MapReduce能较好地解决Web日志处理单机所面临的效率低下问题,能更好地整合计算机资源。

关键词: Hadoop; MapReduce; Web日志; 日志分析

中图分类号:TP391.9 文献标志码:A 文章编号:1006-8228(2017)06-26-03

Research and application of MapReduce in log analysis

Lin Yong, Wu Chong, Yan Meng, Peng Minjia

(Zhejiang Topcheer Information Technology Co.,Ltd., Hangzhou, Zhejiang 310006, China)

Abstract: Hadoop MapReduce is very applicable to log analysis system, and has good usability and scalability. In this paper, the MapReduce log processing technology is applied to the log data analysis of a project platform, and the experimental results show that MapReduce can solve the low efficiency problem of processing Web log with single machine, better integrate computer resources.

Key words: Hadoop; MapReduce; Web log; log analysis

0 引言

Web日志包含着网站最重要的信息,通过日志分析,我们可以知道网站的访问量,哪个网页访问人数最多,哪个网页最有价值,哪些网页需要优化等相关信息。一般中型的网站(10W的PV以上),每天会产生1G以上Web日志文件。大型或超大型的网站,可能每小时就会产生10G的数据量。当数据量每天以10G、100G增长的时候,单机处理能力已经不能满足需求。我们就需要增加系统的复杂性,用计算机集群,存储阵列来解决。在Hadoop出现之前,海量数据存储,和海量日志分析都是非常困难的。只有少数公司掌握着高效的并行计算、分步式计算、分步式存储的核心技术。Hadoop的出现,大幅度地降低了海量数据处理的门槛,让小公司甚至是个人都有能力搞定海量数据,Hadoop非常适用于日志分析系统[1]。

1 Hadoop

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,能以流的形式访问(streaming access)文件系统中的数据。

Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,MapReduce为海量的数据提供了计算[2]。

2 MapReduce编程模型

Google提出的MapReduce编程模型,由于良好的易用性和可扩展性,得到了工業界和学术界的广泛支持。Hadoop,MapReduce的开源实现,已经在Yahoo!,Facebook,IBM百度,中国移动等多家单位中使用[3]。

MapReduce以函数方式提供了Map和Reduce来进行分布式计算。Map相对独立且并行运行,对存储系统中的文件按行处理,并产生键值(key/value)对。Reduce以Map的输出作为输入,相同key的记录汇聚到同一reduce,reduce对这组记录进行操作,并产生新的数据集。所有Reduce任务的输出组成最终结果。形式化描述如下:

apReduce主要分为以下几步。

⑴ 用户提交MapReduce程序至主控节点,主控节点将输入文件划分成若干分片(split)。主控节点Master 和工作节点worker启动相应进程。

⑵ 主控节点根据工作节点实际情况,进行map任务的分配。

⑶ 被分配到map任务的节点读取文件的一个分片,按行进行map处理,将结果存在本地。结果分成R个分片进行存储,R对应的是Reduce数目。

⑷ Map节点将存储文件的信息传递给Master主控节点,Master指定Reduce任务运行节点,并告知数据获取节点信息。

⑸ Reduce节点根据Master传递的信息去map节点远程读取数据。因为reduce函数按分组进行处理,key相同的记录被一同处理,在reduce节点正式处理之前,对所有的记录按照key排序。

⑹ Reduce将处理结果写入到分布式文件系统中[4]。

3 某项目平台日志数据分析

我们使用科技系统某项目平台日志数据,进行提取KPI数据分析,以PV(PageView,页面访问量统计)为例进行测试。

项目采用tomcat集群,tomcat访问日志每天产生一份。每天在夜间在0点后,向HDFS导入前一天的日志文件。

一条tomcat访问日志如下所示:

日志处理流程如图2所示。完成导入后,启动MapReduce程序,提取并计算统计指标,最后将结果按指标值排序。整个处理过程采用两个任务串联执行方式完成。

3.2 任务-PV值统计

3.2.1 Map阶段

在Map阶段是从日志文件中读取记录,提取日志中的数据url值,以url作为Map()方法的key,将常量值1作为value。算法如下:

⑴ Map开始;

⑵ 获取日志文件路径;

⑶ 读取日志文件;

⑷ 用正则表达式模式识别url,设置url为Key;

⑸ 设置value为1;

⑹ 写人key与value,context.write(request,1);

⑺ Map结束。

3.2.2 Reduce阶段

在Reduce阶段将得到的数据以key作为主键,将所有value值相加得出最终结果:

⑴ Reduce开始;

⑵ 收集Map阶段传人的key与value,

⑶ 累加values;

⑷ 写入key,sum,context.wirte(key,sum);

⑸ Reduce结束。

3.3 任务二PV值排序

3.3.1 Map阶段

Map阶段是从任务一输出目录获取数据,将PV值做为key,url作为value。算法如下:

⑴ Map开始;

⑵ 获取任务一输出目录路径;

⑶ 读取任务一结果文件;

⑷ 设置PV值为Key;

⑸ 设置url值为1;

⑹ 写人key与value,context.write(pv,url);

⑺ Map结束。

3.3.2 Reduce阶段

在Reduce阶段将得到的数据以key作为主键,系统将根据key的实现自动进行排序,采用IntWritable为Key可进行升序排列,若要实现升序排列,需要自己实现Key实现。

⑴ Reduce开始;

⑵ 收集Map阶段传人的key与value,

⑶ 写入pv,url,context.wirte(context.write(pv,url););

⑷ Reduce结束。

3.4 执行结果

由图3可知,前三个页面访问量占了总访问量的95%,说明对该三个页面进行优化,可达到很好性能提升效果。

同时,我们尝试分别采用不同数量节点对日志进行处理。

由图4可知,随着节点数的增加,对日志處理所需要的时间呈不断下降的趋势。

4 结束语

本文介绍了Hadoop技术和MapReduce编程模型,并将MapReduce编程模型应用于某项目平台日志数据的KPI数据分析中,以PV(PageView,页面访问量统计)为例进行了测试。实验结果充分说明了,基于Hadoop的MapReduce的日志处理技术能较好地解决Web日志处理单机所面临的效率低下问题,更好地整合计算机资源。下一步将考虑完善KPI指标,并尝试使用spark引擎对KPI指标进行实时分析,以提高对系统各种突发状况的响应速度。

参考文献(References):

[1] 毛严奇,彭沛夫.基于MapReduce的Web日志挖掘预处理[J].

计算机与现代化,2013.9:35-41

[2] 王宏宇.基于Hadoop平台的云计算构建与日志分析[D].哈

尔滨理工大学硕士学位论文,2012.

[3] 窦蒙,闻立杰,王建民等.基于MapReduce的海量事件日志并

行转化算法[J].计算机集成制造系统,2013.19(8):1784-1793

[4] 徐正巧,赵德伟.基于MapReduce的网络日志分析系统[J].网

络与通信,2015.10:89-90

1.环球科技网遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.环球科技网的原创文章,请转载时务必注明文章作者和"来源:环球科技网",不尊重原创的行为环球科技网或将追究责任;3.作者投稿可能会经环球科技网编辑修改或补充。