一种去重方法及系统的制作方法

文档序号:6515345阅读:149来源:国知局
一种去重方法及系统的制作方法【专利摘要】本发明公开了一种去重方法,包括:获取存储于Hadoop集群系统中的任意一个或多个节点中,或者分布于任意网络资源中的URL数据;按照Hadoop集群系统的映射框架中所指定的输入类格式,对获得的URL数据进行映射处理;按照Hadoop集群系统中的归约框架中所指定的类格式,对映射处理的结果进行归约处理,归约处理的结果为对URL去重的结果;其中映射处理在Hadoop集群系统的一个或多个节点中执行,归约处理在Hadoop集群系统的一个或多个节点中执行,映射处理和归约处理分别在Hadoop集群系统的一个或多个节点中并发、或顺序执行。【专利说明】一种去重方法及系统【
技术领域
】[0001]本发明涉及分布式网络技术,尤其涉及一种去重方法及系统。【
背景技术
】[0002]随着互联网技术的不断发展与网络信息量的不断剧增,用户能够从海量的信息中快速高效的搜索有价值的信息对于互联网的发展至关重要。因此对于同一资源定位符(URL,UniformResourceLocator)数据的去重尤为重要。例如,对于搜索信息来说,网络信息采集是其重要组成部分,URL去重直接影响网络信息采集的效率。因此,URL的去重方案设计与实现是非常重要的。[0003]目前,对于去重设计方案主要有基于哈希计算算法的去重方案和基于BloomFilter算法的去重方案等。其中,[0004]哈希计算算法去重方案的主要思路大致包括:对每个URL进行哈希计算,得到唯一的校验和来标识URL;通过查找该校验和是否出现在已采集的URL库中,如果出现,则丢弃;如果未出现,查找是否出现在待采集的URL库中,出现则丢弃,否则将该URL保存在待采集的URL库中。但是哈希算法的计算复杂度高,效率差。[0005]BloomFilter算法的去重方案的主要思路大致包括:将同一个URL通过多个不同的哈希计算函数映射到同一个位数组中的不同位上,根据其位数组中多个不同位的状态识别该URL的采集状态(该URL是否已采集)。BloomFilter算法的优点是,只需要在内存中保存位数组这样一个数据结构,就能够判别URL的采集状态,不需要保存具体的URL,占用的存储空间小,同时查找计算的速度快。但是,BloomFilter算法在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合。因此BloomFilter算法的缺点是不能做到精确无误,存在一定的误差。【
发明内容】[0006]为了解决上述技术问题,本发明提供了一种去重方法及系统,能够在Hadoop集群中并发的访问、处理数据,保证去重的高效性和准确性。[0007]为了达到本发明的目的,本发明提供了一种去重方法,包括:获取存储于Hadoop集群系统中的任意一个或多个节点中,或者分布于任意网络资源中的URL数据;[0008]按照所述Hadoop集群系统的映射框架中所指定的输入类格式,对获得的URL数据进行映射处理;[0009]按照所述Hadoop集群系统的归约框架中指定的类格式,对所述映射处理的结果进行归约处理;[0010]其中,所述映射处理在所述Hadoop集群系统的一个或多个节点中执行,所述归约处理在所述Hadoop集群系统的一个或多个节点中执行,所述映射处理和所述归约处理分别在所述Hadoop集群系统的一个或多个节点中并发、或顺序执行。[0011]进一步地,所述映射处理所在节点与所述归约处理所在节点相同;或者,所述映射处理所在节点与所述归约处理所在节点不同。[0012]进一步地,所述映射处理包括:判断所述获得的URL数据是否已被采集,如果已被采集,则写入中间数据文件中;否则,根据所述获得的URL数据所对应的原始网页中的链接,计算采集权值,并将所述获得的URL数据标记为已采集状态。[0013]进一步地,所述归约处理包括:将所述映射处理的结果放在同一个归约任务中批量执行。[0014]进一步地,所述执行映射处理的节点的数量为预先设置。[0015]进一步地,所述执行归约处理的节点的数量为预先设置。[0016]本发明提供了一种去重系统,包括:[0017]数据获取设备,用于获取存储于Hadoop集群系统中的任意一个或多个节点中,或者分布于任意网络资源中的URL数据;[0018]映射处理设备,用于按照所述Hadoop集群系统的映射框架中指定的输入类格式,对获得的URL数据进行映射处理;[0019]归约处理设备,用于按照所述Hadoop集群系统的归约框架中指定的类格式,对所述映射处理的结果进行归约处理,归约处理的结果为对URL去重的结果;[0020]其中,所述映射处理在所述Hadoop集群系统的一个或多个节点中执行,所述归约处理在所述Hadoop集群系统的一个或多个节点中执行,所述映射处理和所述归约处理分别在所述Hadoop集群系统的一个或多个节点中并发、或顺序执行。[0021]进一步地,所述映射处理和所述归约处理在所述Hadoop集群系统的相同的节点中执行或、所述映射处理和所述归约处理在所述Hadoop集群系统的不同的节点中执行。[0022]进一步地,所述映射处理设备具体用于:判断获得的URL数据是否已被采集,如果已被采集,则写入中间数据文件中;否则根据所述URL数据所对应的原始网页中的链接,计算采集权值,并将所述URL数据标记为已采集状态。[0023]进一步地,通过参数设置执行所述映射处理的节点的数量。[0024]进一步地,通过参数设置执行所述归约处理的节点的数量。[0025]本发明方案通过获取存储于Hadoop集群系统中的任意一个或多个节点中,或者分布于任意网络资源中的URL数据;按照所述Hadoop集群系统的映射框架中所指定的输入类格式,对获得的URL数据进行映射处理;按照所述Hadoop集群系统的归约框架中指定的类格式,对所述映射处理的结果进行归约处理,从而解决了在Hadoop集群系统中并发地访问、处理数据,并保证了去重的高效性和准确性。[0026]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。【专利附图】【附图说明】[0027]附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。[0028]图1为本发明去重方法的流程图;[0029]图2为本发明去重系统的示意图;[0030]图3为本发明URL去重模块的类结构的示意图;[0031]图4为本发明URL去重模块的时序图。【具体实施方式】[0032]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互任意组合。[0033]在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。[0034]图1为本发明去重方法的流程图,如图1所示,包括以下步骤:[0035]步骤100:获取存储于Hadoop集群中的任意一个或多个节点中,或者分布于任意网络资源中的URL数据;[0036]本步骤中,URL数据可以是因特网、局域网中的网络资源。URL数据可以下载到本地、或可以下载到Hadoop集群的任意一个或多个节点中。这些数据文件可以在线获取,并在线处理。进一步地,URL数据也可以是存储在本地的文件。优选地,将URL数据存储在Hadoop分布式文件系统(HDFS,HadoopDistributedFileSystem)上,以提高URL数据的去重的效率。[0037]步骤102:按照Hadoop集群系统的映射框架中指定的输入类格式,对获得的URL数据进行映射处理。[0038]本步骤中,继承Hadoop集群系统的映射框架中的映射类,根据Hadoop计算框架中的映射类,编写相关函数。这些函数可以包括映射函数,其中映射函数可以完成步骤102中所实现的功能。例如,映射函数将待采集和已采集的状态设置成真(true)或假(false)。映射函数的一个作用是为了归约函数做准备。[0039]优选地,本发明实施例中以Hadoop计算框架的映射归约编程模式来详细阐述映射函数的实现方式。首先,Hadoop计算框架的映射归约编程模式的运行机制:函数库首先把输入文件(URL数据)分成M块,接着在集群的机器上执行处理程序。映射函数运行过程中有一个主控程序,称为master。主控程序会产生很多作业程序,称为worker。主控程序把M个映射任务和R个归约任务分别分配给这些具有worker的一个和多个节点,并让这些节点并发执行。被分配了映射任务的worker节点,读取并分析相关的URL输入数据,将分析出的键/值(key/value)对,传递给用户定义的归约函数。映射函数产生的中间结果键/值(key/value)对暂时缓冲到内存。映射函数缓冲到内存的中间结果将被定时刷写到本地硬盘、和/或Hadoop集群中的任意一个或多个节点中。随后将这些中间结果通过分区函数分成R个区,并将这些中间结果所在的位置信息发送回master。[0040]然而,随着被保存的数据规模的不断扩大,需要对其进行压缩存储。采用了MD5算法对已采集过的数据进行hash计算,这样每个数据保存时仅需32字节长度,因此减少了存储空间。该方法的数据去重策略计算过程较为简洁,且支持并行计算,因此更为高效。[0041]步骤104:按照Hadoop集群系统的归约框架中指定的类格式,对映射处理的结果、或获得的URL数据进行归约处理;其中映射处理在Hadoop集群系统的一个或多个节点中执行;归约处理在Hadoop集群系统的一个或多个节点中执行;映射处理和归约处理分别在Hadoop集群系统的一个或多个节点中并发、或顺序执行。[0042]本步骤中,继承Hadoop集群系统的归约框架中的归约类,归约函数可以先对映射函数的处理结果进行遍历归约、也可以对所获取的URL数据进行遍历归约、还可以同时对映射函数的处理结果和URL数据进行遍历归约。例如,可以采用MD5算法,对映射函数的处理结果,进行迭代地遍历记录。对遍历结果进行标识,并对遍历结果按照相关属性进行归类。[0043]优选地,本发明结合Hadoop计算框架的映射归约编程模式,来对归约函数的实现进行详细阐述。例如,master负责把映射函数的处理结果所在的位置信息、URL数据所在的位置信息传送给归约函数的worker。当master通知了归约函数的worker关于中间键/值(key/value)对的位置时,worker调用远程方法,并从映射函数的worker机器所在的本地硬盘上读取缓冲的中间数据。当归约函数的worker读取到了所有的中间数据,它就使用这些中间数据的键(key)进行排序,这样可以使得相同键(key)的值都在一起。并对中间结果集进行外排序。归约函数的worker根据每一个中间结果的键(key)来遍历排序后的数据,并且把键(key)和相关的中间结果值(value)集合传递给归约函数,最终把输出结果存放在master机器的一个输出文件中。[0044]进一步地,映射处理在Hadoop集群系统的一个或多个节点中执行;归约处理在Hadoop集群系统的一个或多个节点中执行;映射处理和归约处理分别在Hadoop集群系统的一个或多个节点中并发、或顺序执行。具体地:[0045]映射函数和归约函数可以在相同的节点或不同的节点中执行。映射函数和归约函数可以并发执行、和/或顺序执行。优选地,映射函数和归约函数可以在hadoop集群中的任何一个或多个服务器中顺序执行、或并发执行。也可以在Hadoop集群中任何一个或多个节点中顺序执行,或并发执行。[0046]优选地,本发明结合Hadoop计算框架的映射归约编程模式,来对上述步骤的实现进行详细阐述。在Hadoop集群系统的的一个或多个节点中,根据用户程序指定的输入文件的目录,按照HDFS文件的数据块大小,由Hadoop计算框架的映射归约编程模型接口中的一个接口(例如,InputSplit接口),来划分数据文件。且每一个数据块对应一个映射任务。同时对于每一个划分的数据块,按照用户程序中指定的输入文件的格式划分成相应格式的数据记录。其中这些数据块可以分布于同一个节点中,也可以分布在不同的节点中。将已采集过的数据库中的文件按照HDFS系统文件块的大小,先划分为不同的数据块,在每一个数据块中,按照待采集的数据格式划分为不同的数据记录,可选地,还可以将从新下载的未去重的URL数据按照系统文件块的大小,来划分在不同的数据块中。在每一个数据块中,按照待采集的数据格式划分为不同的数据记录(例如,〈URL,URLWritable〉)。[0047]其中每个映射任务可以由多个节点并发或顺序执行。映射任务按照迭代的方式,将每一个数据记录按照映射函数中指定的方法进行处理。对于处理结果,可以按照映射输出格式(例如,〈key,value〉)保存在本地文件系统上、或保存在任意一个或多个节点中。根据数据格式记录的字段的布尔值,来判断该数据是否被采集过,如果该数据已被采集过,则以相应的格式(例如,〈MD5(URL),URLWritable>),直接写入到中间数据文件、或其它一个或多个节点中。否则,表明该数据未被采集过,并对该数据进行相关采集操作(例如,抽取出待采集数据的采集权值并赋值一通过设置数据格式中的相关字段,然后将该数据的相应字段的布尔值设置为true)。[0048]而归约函数则可以对上述映射的处理结果进行遍历归约。其中归约函数可以和映射函数存在于同一个节点中,也可以存在于不同的节点中。执行归约函数的节点中,会有JobTracker进程,以通知每一个归约任务需要从哪些数据节点中拉取数据,并且按照用户程序指定的归约输入文件格式(例如,同映射的输出文件格式)以及按照归约函数指定的方式迭代处理这些记录。最后按照用户程序指定的输出文件格式输出到指定的输出文件目录中。[0049]本发明的方法还包括:通过参数控制执行映射函数和归约函数的节点数量。优选地,可以在Hadoop集群中设置30个节点执行映射函数,还可以设置30个节点来执行归约函数,其中,上述这30个节点可以是完全相同的节点,也可以是完全不同的节点,还可以设置成部分节点相同,部分节点不相同。并且这些节点可以是服务器、客户端、服务器集群、网络设备。[0050]本发明的方法还包括:映射函数:采用MD5算法对数据文件进行哈希计算;归约函数:对映射函数的执行结果进行批量地遍历并分类输出。映射函数中,每一个映射任务将数据记录按照函数中指定输入类的标准格式进行处理,将数据处理后的结果作为中间结果,按照键值对〈key,value)的形式存储在本地文件系统中。该模块主要根据数据格式记录的标记来判断该数据是否被采集,如果是已采集状态,则直接写入到中间数据文件中;否则,该数据为新采集的数据,计算新采集数据所对应的采集权值,并将其标记为已采集状态。最后将该数据存储到中间数据文件中。归约函数中,Hadoop计算框架中Jobtracker将创建归约Task,并监控该归约Task作业。归约Task任务会根据指示,到相应的数据节点取出数据,且按照指定的类格式对数据进行处理,最后的处理结果按照用户的指定输出格式及输出路径存储到文件系统中。该模块是将映射函数中的key值相同的放在同一个resuceTask中执行,并根据数据格式中的标记来判断数据是待采集状态还是已采集状态,若为待采集状态,则写入到指定的待采集的输出目录中;若为已采集状态,则写入到指定的已采集的数据输出目录。[0051]图2为本发明去重系统的示意图,其包括数据获取设备、映射处理设备、以及归约处理设备,其中:[0052]数据获取设备,用于获取存储于Hadoop集群中的任意一个或多个节点中,或者分布于任意网络资源中的URL数据;[0053]映射处理设备,用于按照Hadoop集群系统的映射框架中指定的输入类格式,对获得的URL数据进行映射处理;[0054]归约处理设备,用于按照Hadoop集群系统的归约框架中指定的类格式,对映射处理的结果进行归约处理,归约处理的结果为对URL去重的结果;[0055]其中映射处理在Hadoop集群系统的一个或多个节点中执行,归约处理在Hadoop集群系统的一个或多个节点中执行,映射处理和归约处理分别在Hadoop集群系统的一个或多个节点中并发、或顺序执行。[0056]具体地,数据预处理设备和数据归约设备可以是Hadoop集群中相同的节点,也可以是不同的节点。并且可以通过参数控制所述数据预处理设备和所述数据归约设备的数量。[0057]以基于Hadoop集群的URL去重策略为实例,对本发明进行详细说明。其【具体实施方式】如下:[0058]在网络信息采集中,要保证待采集的URL是唯一的,即确定已采集过的URL库中不包含待采集的URL。因此,这涉及到URL的去重方案的设计。本发明利用Hadoop计算框架对数据的分析处理能力,利用Hadoop中的计算框架,来解决URL的去重问题,以提高网络信息采集的效率。该URL去重方案是将从网页中新抽取的URL与已采集的URL库进行对比去重,并将结果写入待采集的URL库中。随着网络信息采集的扩大,被保存的URL也不断扩大,采取的措施是:一方面采用MD5算法对已采集过的URL进行哈希,有效的减少存储空间?’另一方面,利用Hadoop分布式框架中的HDFS存储大规模的数据。下面详细介绍其具体实现过程。[0059]首先利用Hadoop计算框架来编写映射函数和归约函数。其中映射函数和归约函数可以同时分布在Hadoop集群的同一个节点中,也可以分布在Hadoop集群的不同节点中。映射函数可以在Hadoop集群的一个节点中先序执行,也可以在Hadoop集群的多个节点中同时并发执行映射函数。可以在Hadoop集群的多个节点中执行映射函数,并且同时在Hadoop集群的多个节点中执行归约函数。[0060]其次设计所有函数的类结构。其中URL去重模块的类结构示意图如图3所示。ParseExtractDriver类为实现URL抽取、去重功能的主类,在这个类中,还包括映射归约任务的ParseExtract映射per类、以及ParseExtract归约r类,这两个类通过实现映射或是归约接口,分别完成映射归约任务中的映射任务和归约任务。此外,该类图中还包含有从新下载的网页中抽取出URL的Parser类,URLFilter类和URLCanonicalizerURL类完成URL过滤任务,主要是对URL的后缀规则匹配和URL格式的合法性校验,MutilDiretorySequenceFiIeOutputFormat类指定该功能模块输出的数据块格式。[0061]所有函数运行的时序图如附图4所示。首先将已采集的URL库中的文件按照HDFS系统文件块的大小,先划分为不同的数据块,在每一个数据块中,按照待采集的URL的格式划分为不同的数据记录〈URL,URLWritable>,此外,还将从新下载的未去重的网页库中的文件按照HDFS系统文件块的大小,先划分为不同的数据块,在每一个数据块中,按照待采集的URL的格式划分为不同的数据记录〈URL,URLWritable〉;其次,在映射函数中根据数据格式〈URL,URLWritable〉记录的URLWritable中的catchedStatus字段的Boolean值判断该URL对应是否为被采集的URL,如果对应为已采集的URL,则以<MD5(URL),URLWritable〉格式直接写入到中间数据文件中,否则,表明该URL对应的为新采集的网页,从URLWritable中的webContent字段中获取该URL对应的原始网页内容,并根据网页的结构和网页中的相关标记(href)等,抽取出网页中链出的锚文本(URL),此外,对抽取出待采集的URL计算URL对应的网页的采集权值并赋值(通过设置URLWritable数据格式中的score字段),然后对于刚采集的URL,将其URLWritable中的catchedStatus字段的Boolean值设置为true,对于从该URL对应的网页中抽取的URL,初始化为URLWritable格式,并将其中的catchedStatus字段的Boolean值设置为false,然后按照〈MD5(URL),URLWritable〉格式将刚采集的URL和新抽取的URL写入到中间数据文件中;最后,在归约阶段根据映射阶段的中间结果处理,对相同key中的每个Value进行遍历,URLWritabIe中有任何一个记录的catchedStatus字段的Boolean值为true,贝U表明该key对应的URL为已米集的URL,将其按照〈MD5(URL),URLffritable)格式写入到指定的已采集的URL库的输出目录中,如果这些URLWritable集合中的任何一个URLWritable记录中的catchedStatus字段的Boolean值都为false,则表明该URL对应的网页从未被下载,将其按照〈URL,URLWritable〉格式写入到指定的待采集的URL库的输出目录中。[0062]本领域的技术人员应该明白,上述的本发明实施例所提供的装置的各组成部分,以及方法中的各步骤,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上。可选地,它们可以用计算装置可执行的程序代码来实现。从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。[0063]虽然本发明所揭露的实施方式如上,但该的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。【权利要求】1.一种去重方法,其特征在于,包括:获取存储于Hadoop集群系统中的任意一个或多个节点中,或者分布于任意网络资源中的URL数据;按照所述Hadoop集群系统的映射框架中所指定的输入类格式,对获得的URL数据进行映射处理;按照所述Hadoop集群系统的归约框架中指定的类格式,对所述映射处理的结果进行归约处理;其中,所述映射处理在所述Hadoop集群系统的一个或多个节点中执行,所述归约处理在所述Hadoop集群系统的一个或多个节点中执行,所述映射处理和所述归约处理分别在所述Hadoop集群系统的一个或多个节点中并发、或顺序执行。2.根据权利要求1所述的去重方法,其特征在于,所述映射处理所在节点与所述归约处理所在节点相同;或者,所述映射处理所在节点与所述归约处理所在节点不同。3.根据权利要求1或2所述的去重方法,其特征在于,所述映射处理包括:判断所述获得的URL数据是否已被采集,如果已被采集,则写入中间数据文件中;否则,根据所述获得的URL数据所对应的原始网页中的链接,计算采集权值,并将所述获得的URL数据标记为已米集状态。4.根据权利要求1或2所述的去重方法,其特征在于,所述归约处理包括:将所述映射处理的结果放在同一个归约任务中批量执行。5.根据权利要求3所述的去重方法,其特征在于,所述执行映射处理的节点的数量为预先设置。6.根据权利要求4所述的去重方法,其特征在于,所述执行归约处理的节点的数量为预先设置。7.—种去重系统,其特征在于,包括:数据获取设备,用于获取存储于Hadoop集群系统中的任意一个或多个节点中,或者分布于任意网络资源中的URL数据;映射处理设备,用于按照所述Hadoop集群系统的映射框架中指定的输入类格式,对获得的URL数据进行映射处理;归约处理设备,用于按照所述Hadoop集群系统的归约框架中指定的类格式,对所述映射处理的结果进行归约处理,归约处理的结果为对URL去重的结果;其中,所述映射处理在所述Hadoop集群系统的一个或多个节点中执行,所述归约处理在所述Hadoop集群系统的一个或多个节点中执行,所述映射处理和所述归约处理分别在所述Hadoop集群系统的一个或多个节点中并发、或顺序执行。8.根据权利要求7所述的去重系统,其特征在于,所述映射处理和所述归约处理在所述Hadoop集群系统的相同的节点中执行或、所述映射处理和所述归约处理在所述Hadoop集群系统的不同的节点中执行。9.根据权利要求7所述的去重系统,其特征在于,所述映射处理设备具体用于:判断获得的URL数据是否已被采集,如果已被采集,则写入中间数据文件中;否则根据所述URL数据所对应的原始网页中的链接,计算采集权值,并将所述URL数据标记为已采集状态。10.根据权利要求7或9所述的去重系统,其特征在于,通过参数设置执行所述映射处理的节点的数量。11.根据权利要求7或9所述的去重系统,其特征在于,通过参数设置执行所述归约处理的节点的数量。【文档编号】G06F17/30GK103530369SQ201310478890【公开日】2014年1月22日申请日期:2013年10月14日优先权日:2013年10月14日【发明者】郭美思,何志平,吴楠申请人:浪潮(北京)电子信息产业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1