一种基于NoSQL的大规模Web日志分析系统的制作方法_2

文档序号:8395866阅读:来源:国知局
;这些日志数据处理技术在日志进行存储和分析之前使用,可以大大提高了日志分析的质量,降低实际分析所需要的时间。
[0051]所述的日志存储模块以单文档为单位存储的,可以任意给一个或一批文档新增或删除字段,而不会对其它文档造成影响;
[0052]所述的日志分析模块包括四分步骤:数据准备、Map函数、Reduce函数、日志分析。
[0053]日志的规模日益庞大,处理数据后还得解决日志的集中存储问题,本系统的方案是应用分布但日志集中式的远程存储。MongoDB采用面向文档的数据存储模型,使得数据可以在多个节点之间进行分割。MongoDB数据库还可以对集群中的数据的负载进行均衡,自动排序文档时间。MongoDB采用分片的技术进行数据的扩展,分片技术可以通过增加节点的数量来应对不断膨胀的数据的负载和规模,同时不会对应用造成影响。
[0054]Web日志分析是本系统的核心,采用了 Hadoop这一流行的开源框架来完成我们系统的日志分析模块的功能。Hadoop通过将本文存储的Web日志数据任务分布到多个节点上,从而并行的对日志进行处理。Web日志分析任务可以扩展到数十、上百甚至上千个节点上,从而提高效率。Hadoop对Web日志数据进行分析,可以适用于不同的场景,通过对配置文件进行修改过,提供多种日志分析选择。分析Web日志数据时,当有2个节点时,其中的一个节点作为NameNode/TaskTracker使用,另一个节点作为又作为DataNode/TaskTracker来使用。当有更多的节点时,可以将NameNode和DataNode的数量比较进行调整。
[0055]参见图4,日志收集模块是收集日志信息的过程,日志文件本身是一个非结构化的文本文件,但是里面又包含了可以结构化出来的信息,因此对于日志文件是最适合采用MongoDB数据库进行存储,首先是对日志文件进行实施的解析和入库,对于任何的日志文件,基本都可以收集日志发生的时间,日志类型(info,eiror),日志等级,关键异常,异常详细说明等相关信息,这些信息在结构化出来后需要持久化的存储起来,采用MongoDB数据库可以实现本身在数据存储层的灵活水平扩展,为了对日志进行收集,需要安装下面一些组件:Fluentd with MongoDB Plugin、MongoDB、Apache with the Combined Log Format,通过使用命令gem install fluent-plugin-mongo来进行安装。
[0056]参见图5,日志收集模块中数据清洗时首先结合网站的拓扑结构,通过检查URL的后缀名,删除认为不相关的文件,通过分析页面HTML的源文件中的window, open来寻找对应的弹出页面的URL,从而删除该页面,当服务器对用户发出的请求相应失败时,Web日志同样会记录这种情况,但这对Web日志挖掘没有意义,所以在进行数据清理的时候,通过日志中的状态码删除服务器对请求响应失败的的记录;
[0057]用户识别是用来关联用户请求和服务器响应的过程,当用户访问某个Web页面时,需要对其产生一个标识符,当下次该用户来访问时,可以对其进行识别,通常用户标识符采用用户的访问IP ;
[0058]会话识别是指一个客户端浏览器与WEB服务器之间连续发生的一系列请求和相应过程,WEB服务器能够把属于同一个会话中的一系列的请求和响应过程关联起来;
[0059]日志收集模块主要对日志收集模块的数据进行数据清理,数据集成,数据变换,数据归约。
[0060]本系统通过Hadoop分布式架构的MapReduce编程模式对收集的原始日志数据进行处理,主要步骤:
[0061]1、读取收集的日志数据;
[0062]2、清除无用的数据;
[0063]3、检查数据的完整性和正确性;
[0064]4、将数据存储在MongoDB中。
[0065]用户定义的Map和Reduce函数都有相关联的类型。
[0066]参见图6,在日志存储模块包含有 storage view:Share view、private view、journal view 日志;
[0067]Share view:位于内存上,会存储已经改变的要刷新到磁盘上的数据(脏数据),
Share view是唯--个直接连映射到数据库文件上的view,当启用MongoDB的日志功能时,MongoDB会请求操作系统把磁盘上的数据文件指向share view内存视图上,操作系统不会数据文件加载到share view中,MongoDB在需要时自己把数据文件加载到share view上;
[0068]Private view:位于内存上,存储用于读请求的数据,更改请求最先在这执行,MongDB 把 Private view 指向 share view ;
[0069]Journal view:存储已经在private cache上发生更改的数据,但是会在更改数据刷新到share view (cache)之前存储,Journal view确保了数据的持久化,如果更改的数据没有刷新到磁盘上的数据文件里,当MongoDB起来以后,MongoDB会把journallog中没应用到数据文件中的数据回放到share view (cache)中,最终会应用到数据文件中。
[0070]参见图7,当一个写请求发生,首先会更改private view (cache)中的数据,然后默认每100毫秒刷新到journal log。journal log有一个记录当前日志点的pointer。然后应用journal log中的写操作到share view,这时share view就和数据文件不一致。然后默认每隔60秒,mongodb会请求操作系统刷新sharedview中更改的数据到数据文件。然后mongdb会把journal log中记录更改数据日志点的pointer,以前的数据删除掉。为了数据的一致性,MongoDB通常会请求操作系统重新把share view指向private view。
[0071]另外,日志分析模块运行的步骤为:
[0072]1、数据准备
[0073]从MongoDB数据库中导入原始数据到日志分析模块中;
[0074]2、Map 函数
[0075]写一个map函数,保存在文件mapper, rb中;
[0076]3、Reduce 函数
[0077]然后是reduce函数,保存在文件reducer, rb中;
[0078]4、日志分析
[0079]利用MapReduce方法处理第一步中获取的数据。
[0080]在本发明的一个实施例中:
[0081]参见图8,系统本次测试使用的Hadoop服务器集群一共有13台物理服务器,每台内存2G,空间160G。其中一台主节点使用的操作系统为Ubuntu,通过在上面实现MapReduce编程模块,其他的几台服务器使用的是WindowsXP系统,部署Hadoop的其他模块。本文选择jdk-1.6.0.14作为Java的运行版本,安装完成后对相应的环境变量。
[0082]13台机器的IP配置如下:
[0083]JobTracker 节点:172.17.10.1
[0084]PCl:172.17.10.101
[0085]PC2:172.17.10.102
[0086]PC3:172.17.10.103
[0087]PC4:172.17.10.104
[0088]PC5:172.17.10.105
[0089]PC6:172.17.10.106
[0090]PC7:172.17.10.107
[0091]PC8:172.17.10.108
[0092]PC9:172.17.10.109
[0093]PClO:172.17.10.110
[0094]PCll:172.17.10.1ll
[0095]PC12:172.17.10.112
[0096]各个节点之间的服务器名以及IP地址需要相互解析。
[0097]在这13台PC中,使用独立的一台服务器作为NameNode和Jobtracker.PC1-PC12作为DataNode和Tasktracker。整个平台的搭建配置步骤简述如下:
[0098]1.每一台服务器上安装Linux操作系统,同时将命名好的服务器连接到交换机节点上,配置每台服务器相应的/etc/hosts目录,使得各个节点之间可以相互通信。
[0099]2.为每台服务器生成一个PCI的密钥对,将公钥放在/home/ssh目录下,使得个台服务器可以通过ssh进行远程登录,这样方便系统的使用和管理。
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1