一种基于Hadoop的海量web数据挖掘方法

文档序号:8487896阅读:192来源:国知局
一种基于Hadoop的海量web数据挖掘方法
【技术领域】
[0001]本发明公开一种海量web数据挖掘方法,属于计算机数据处理领域,具体地说是一种基于Hadoop的海量web数据挖掘方法。
【背景技术】
[0002]针对目前Web数据规模的快速增长,单一节点的计算能力已经不能胜任大规模数据的分析处理,近几年来,随着“云计算”技术的兴起,人们将海量数据存储与处理的目光转向了这个新兴的技术。Hadoop “云计算”平台最大的优势是它实现了 “计算靠近存储”思想,传统的“移动数据以靠近计算”模式在数据规模达到海量时的系统开销太大,而“移动计算以靠近存储”可以省去了海量数据的网络传输这一大开销,就能大幅消减处理时间。随着“云计算”技术的兴起,将现有的数据挖掘方法与“云计算“平台融合以提高数据挖掘的效率,但是目前对数据挖掘的研宄主要集中在改进挖掘系统的有效性方面,而忽视了对海量数据的处理速度的管理。本发明提供一种基于Hadoop的海量web数据挖掘方法,将现有的遗传算法与Hadoop的MapReduce进行融合,针对Hadoop的分布式文件存储系统HDFS中的海量Web数据进行挖掘。为进一步验证该平台的高效性,在该平台上利用融合后的算法挖掘Web日志中用户的偏爱访问路径。实验结果表明,在Hadoop中运用分布式算法处理大量的Web数据,可以明显提高Web数据挖掘的效率,验证该系统的可用性。

【发明内容】

[0003]本发明针对数据挖掘的研宄主要集中在改进挖掘系统的有效性方面,而忽视了对海量数据的处理速度的管理的缺陷,提供一种基于Hadoop的海量web数据挖掘方法,在Hadoop中运用分布式算法处理大量的Web数据,可以明显提高Web数据挖掘的效率,验证该系统的可用性。
[0004]本发明提出的具体方案是:
一种基于Hadoop的海量web数据挖掘方法:
搭建数据挖掘环境:在集群服务器中选择充当NameNode和MapReduce中的JobTracker的服务器,其余为计算节点和数据存储节点,测试数据集来自Web服务器机房的服务器日志;
数据挖掘作业提交:用户提交基于MapReduce编程规范编写的作业;
任务指派:计算出需要的Map任务数和Reduce任务数,并将Map任务分给任务执行节点TaskTracker ;同时分配相应TaskTracker执行Reduce任务;
任务数据读取:被分配到Map子任务的TaskTracker节点读入已经分割好的数据作为输入,经过处理后生成key/value对;
Map任务执行:TaskTracker调用从JobTracker获取到的用户编写的Map函数,并将中间结果缓存在内存中;
本地写中间结果:内存中的中间结果达到一定阈值后,写入到TaskTracker本地的磁盘中;
远程读中间文件JASReduce的TaskTracker从JobTracker中获取子任务,根据中间结果的位置信息通过socket拉取数据,并利用中间结果的key值进行排序,将具有相同key的对进行合并;
执行Reduce任务:执行Reduce任务的TaskTracker遍历所有排序后的中间数据,传递给用户的Reduce函数,执行Reduce过程;
输出结果:当所有的Map任务和Reduce任务都完成时,JobTracker控制将Reduce结果写到HDFS之上。
[0005]所述任务指派的过程为:作业控制节点JobTracker根据作业的情况,计算出需要的Map任务数和Reduce任务数,并根据数据分布情况和对应节点的负载,将Map任务分给存储该任务且负载最轻的任务执行节点,同时根据作业结果的要求,分配相应TaskTracker执行Reduce任务。
[0006]所述的本地写中间结果的过程为:内存中的中间结果达到一定阈值后,写入到TaskTracker本地的磁盘中,将这些中间数据通过分区函数分成与Reduce任务数相同的分区,并将它们的本地磁盘的位置信息发送给JobTracker,然后JobTracker将位置信息发送给执行Reduce子任务的TaskTracker。
[0007]所述的任务指派中计算过程为:MapReduce框架自动将测试集划分成M份,并对数据进行格式化(<id,〈A,B>),id表示日志编号;B表示用户当前访问的页面;A表示用户在访问B之前所停留的页面;
然后Map操作对输入的每个记录进行扫描,将数据集按照上述格式进行初始化;经过Map操作后,得到中间结果〈〈A, B〉,1>,即用户从页面A访问了页面B ;Reduce操作则将中间结果按照具有相同<A,B>的页面跳转访问方式进行合并得到输出结果〈〈A,B〉,n>,其中,η代表访问路径A — >Β的频度。
[0008]每个数据集分别将Reduce操作的结果转换为链表结构,链表头部保存k值,链表结构:k(A, B) (B, D) (D, E)...,其中,k代表染色体的长度;A, B, C,D,E代表页面。
[0009]每个所述的数据集内部进行遗传化操作,直到k不再变化,结束操作。
[0010]所述的遗传化操作的过程为:父代染色体中随机选择2条染色体,然后随机生成插入位置Ins、删除位置Del、插入删除长度Len ;比较2条染色体是否等长,如果相等,则判断头尾是否有重合,如果重合,则连接生成新的染色体,否则,不生成子代染色体;如果不等长,则判断插入和删除的2段基因是否相同,如果相同,则合并为一条染色体作为新的染色体,否则,不生成子代染色体。
[0011]所述的遗传代数为50或者其倍数时,数据群体间进行联姻操作。
[0012]本发明的有益之处是:本发明遗传算法与Hadoop的MapReduce进行融合,针对Hadoop的分布式文件存储系统HDFS中的海量Web数据进行挖掘,进一步验证该平台的高效性,在该平台上利用融合后的算法挖掘Web日志中用户的偏爱访问路径,实验结果表明,在Hadoop中运用分布式算法处理大量的Web数据,可以明显提高Web数据挖掘的效率。
【附图说明】
[0013]图1本发明数据挖掘方法的拓扑示意图。
【具体实施方式】
[0014]结合附图对本发明做进一步说明。
[0015]—种基于Hadoop的海量web数据挖掘方法:
搭建数据挖掘环境:Had00p平台由6台宝德PR2310N服务器组成,其中HDFS中的NameNode和MapReduce中的JobTracker由一台服务器充当,其余5台充当计算节点和数据存储节点。测试数据集来自蚁坊软件的Web服务器机房的服务器日志。测试程序采用Eclipse for Java developer 平台进行开发;
①数据挖掘作业提交:用户提交基于MapReduce编程规范编写的作业;
②任务指派:计算出需要的Map任务数M和Reduce任务数R,并将Map任务分给任务执行节点TaskTracker ;同时分配相应TaskTracker执行Reduce任务;具体过程为:作业控制节点JobTracker根据作业的情况,计算出需要的Map任务数和Reduce任务数,并根据数据分布情况和对应节点的负载,将Map任务分给存储该任务且负载最轻的任务执行节点,同时根据作业结果的要求,分配相应TaskTracker执行Reduce任务;
其中计算过程为:MapReduce框架自动将测试集划分成M份,并对数据进行格式化?id, <A, B>),id表示日志编号;B表示用户当前访问的页面;A表示用户在访问B之前所停留的页面;
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1