论文部分内容阅读
MongoDB是目前IT行业非常流行的一种非关系型数据库(NoSql),其无模式的数据存储方式,丰富的语言查询功能,支持高性能、且易扩展等功能,让其备受青睐。广泛应用于需要频繁读取操作的分布式系统中作为数据的存储仓库。本文依据MongoDB的这些优势,并结合视频网站对日志分析的特殊需求,展开了针对视频网站日志分析系统的研究。通过该研究可以帮助视频网站在提供优质视频内容的同时,为用户提供更好的服务,识别用户的意图,调整页面结构,提高用户体验,更好的满足用户需求,为用户提供有针对性的服务,才能带来更多的经济价值。本文设计了一套能够对视频网站海量日志数据进行高效率分析的系统设计方案,解决了传统的单点、单类类型服务器对现有日志分析工作的不足,旨在通过对日志数据进行有效的数据挖掘,发掘隐藏在日志数据中的用户访问规律和模式,为优化网站结构和经营模式提供有用的信息。本文基于视频网站业务的功能确定了日志分析系统的实际需求;针对该需求,设计了一套针对海量日志的分析系统,该系统分为三个子系统:日志采集子系统、日志分析子系统以及业务分析子系统。日志采集子系统,完成原始日志数据的采集及预处理操作,存入MongoDB数据库中。日志分析子系统,将存储在MongoDB中的日志提取出来进行数据清洗、用户识别、会话识别和补充路径等预处理后,生成中间数据,为业务分析子系统提供数据。业务分析子系统,对生产的中间日志数据进行二次分组与聚合,根据业务需求进行分类,进一步抽取其中的信息再统计出访问用户数,最后聚合出以日、周、月为单位的数据,将最终生成的结果以文件的形式存储或者存入数据库。在系统的实现技术上,日志采集和日志分析子系统充分利用了分布式系统架构在处理海量数据方面的优势,将海量的原始日志及预处理结果存储于MongoDB数据库中。通过Velocity模板引擎设计模板,将MongoDB中的文档进行清洗、过滤,转换为DBObject类型的对象,为MapReduce操作提供数据。基于MapReduce编程框架,利用其高效的并行处理机制,建立不同的Map和Reduce函数计算程序集来实现数据的统计处理。最后,从系统的稳定性和数据的读写效率及系统的吞吐量进行了相关的测试。从商用效果来看,通过本系统根据不同的业务需求及时统计用户的行为信息,为决策发展提供了有效依据。