发明内容
针对上述现有技术中的问题,本发明解决的问题是:解决现有大规模Web信息提取,数据提取片面、存取效率低下的问题。为解决上一问题,本发明提供了一种基于Hadoop集群的大规模Web信息提取方法,包括:
汇聚处理节点根据设定提取条件,从当前网站种子列表中提取待查询网站种子;根据各查询节点的处理量,对所述待查询网站种子进行负载均衡分割,获取各查询节点的待查询种子,将所述待查询种子下发到各查询节点;各查询节点根据所下发的待查询种子,在本地进行网页信息提取,并将从本地提取的网页信息上报到所述汇聚处理节点;汇聚处理节点,将各查询节点上报的网页信息汇聚后获取大规模Web信息。
优选地,所述根据设定提取条件,从当前网站种子列表中提取待查询网站种子的步骤包括:
若提取条件为关键字,则根据获取该关键字的属性归类,根据所述属性归类从网站种子列表中提取归类种子列表;根据所述关键字从所述归类种子列表中提取查询网站种子;或,
根据当前用户标识从网站种子列表中提取用户历史种子列表;根据设定提取条件从当前用户的用户历史种子列表中提取查询网站种子;或,
接收当前用户的用户限定条件;根据用户限定条件从网站种子列表中提取用户限定种子列表;根据设定提取条件从当前用户的用户限定种子列表中提取查询网站种子。
优选地,所述根据各查询节点的处理量对所述待查询网站种子进行负载均衡分割,获取各查询节点的待查询种子的步骤前包括:
向各查询节点下发节点当前处理量上报请求;各查询节点根据所述节点当前处理量上报请求,上报本地的节点当前处理量。
优选地,所述根据各查询节点的处理量,对所述待查询网站种子进行负载均衡分割,获取各查询节点的待查询种子的步骤包括:
根据待查询网站种子的链接数量或历史处理量记录,获取总处理量;若所述总处理量大于各查询节点的处理量之和,则根据查询节点的处理量之和将总处理量拆分为多个任务处理量;根据所述多个任务处理量,将待查询网站种子拆分为多组待查询网站种子;根据各查询节点的处理量,分别对多组待查询网站种子进行负载均衡分割,获取各查询节点的多组待查询种子。
优选地,所述各查询节点根据所下发的待查询种子,在本地进行网页提取的步骤包括:
各查询节点根据所下发的多组待查询种子,在本地进行网页提取。
同时,本发明还提供了大规模Web信息提取系统,在Hadoop集群基础架构上配置,基于MapReduce的捕获层,该捕获层是以各查询节点为Map类型,以汇聚处理节点为Reduce类型的Map/Reduce模型:
所述汇聚处理节点,配置为根据设定提取条件,从当前网站种子列表中提取待查询网站种子;根据各查询节点的处理量,对所述待查询网站种子进行负载均衡分割,获取各查询节点的待查询种子,将所述待查询种子下发到各查询节点;将各查询节点上报的网页信息汇聚后获取大规模Web信息。
所述各查询节点,配置为所下发的查询网站种子,在本地进行网页信息提取,并将从本地提取的网页信息上报到所述汇聚处理节点。
优选地,在Hadoop集群基础架构上还配置,基于IMDS内存数据的组织层:所述组织层,配置为存放本地网站种子列表的HDFS文件格式的Hbase类型内存数据库层。
优选地,所述汇聚处理节点,还配置为:根据设定提取条件,从所述组织层中的本地网站种子列表数据库中提取当前网站种子列表;或根据当前用户的设定条件记录,从所述组织层中的本地网站种子列表数据库中提取当前网站种子列表。
优选地,在Hadoop集群基础架构上还配置,基于IMDS内存数据的决策层;所述决策层,配置为提供用户界面,接收用户数据。
优选地,在Hadoop集群基础架构上还配置,基于IMDS内存数据的分析层以及决策层;所述分析层,配置为组织层与决策层的数据转换接口层。
通过上述技术方案与现有技术相比具有以下优点:本发明借助于云计算平台,基于Hadoop集群的并行计算与分布式存储能力,利用云计算技术获取网络中强大的计算资源,将复杂的、消耗大量计算资源的提取过程通过Hadoop集群分配到多个节点上进行,是当前一种较为有效的解决方案。
具体实施方式
下面结合附图对本发明作进一步详细的说明。
本发明一种实施方式中的基于Hadoop集群的大规模Web信息提取系统的架构为一种基于Hadoop集群的Web信息提取架构。在该整个架构中,将数据库与服务分离为两个独立的集群。为保证系统可稳定运行,在服务集群中又具体建立了常规服务及内部服务。内部服务主要用于能够7天24小时保持提取数据服务正常运行,而不因常规服务占用了资源而停止。在服务集群中需要设计保护进程来监控服务的运行状况,当某服务出现故障时要及时进行服务器的切换或重启,从而使系统更为稳定。为使开发人员对系统的操作更为便捷,在本发明中通过CDH(Cloudera’sDistributionIncludingApacheHadoop,可视化集群管理工具)搭建了可视化管理工具,从而便于开发人员对集群进行管理,并提供相关接口供开发人员调用集群的功能。
图1为本发明一种实施方式中大规模Web信息提取系统的组成示意图。本发明大规模Web信息提取系统包括捕获层101、组织层102、分析层103及决策层104。图3为本发明一种实施方式中大规模Web信息提取方法所实施的节点示意图。其中,Node1~8为查询节点、NodeA为汇聚处理节点,Node1~4在W1网络区域中,Node4~8在W2网络区域中。其中,捕获层101设置于查询节点Node1~8上、组织层102、分析层103及决策层104设置于汇聚处理节点NodeA上。
其中,捕获层101是以各查询节点为Map类型,以汇聚处理节点为Reduce类型的Map/Reduce模型。其中,汇聚处理节点,配置为根据设定提取条件,从当前网站种子列表中提取待查询网站种子;根据查询节点的数量及处理能力,对所述待查询网站种子进行负载均衡分割,获取各查询节点的查询任务方案;根据所述任务方案对各查询节点下发待查询网站种子;各查询节点、配置为根据所下发的查询网站种子列表,在本地进行网页提取;将从本地提取的网页信息进行上报,汇聚后获取大规模Web信息。作为海量Web信息数据提取的关键层次,捕获层101的行为类似于网络爬虫。捕获层由爬虫控制器、工作控制器组成。爬虫控制器包括:网站种子管理器Seeder、下载器Harvester及分类器Collector。这三个部分作为一个工作流如图2所示。图2中下载器Harvester与分类器Collector是多线程及并行的。网站种子管理器Seeder负责网站种子URL管理,即管理定向网站种子URL以及已抓取过的所有URL、可扩展存储网页指纹、历史抓取信息等工作。可将其看为一个URL地址数据库。通过Seeder可以对抓取任务进行缓存或者对网站进行增量爬取。
下载器Harvester可以单独作为一个工作流运行。下载器的功能在于通过URL地址获取网页的源代码信息。下载器是多线程的。并且该下载器是分布于网络中的各查询节点的。在汇聚处理节点划分总任务信息后,各查询节点下载到,所分配URL地址表。每个节点通过下载器(Harvester)下载URL地址表中每一个URL的页面内容,之后再通过Reduce程序将内容汇总并传递给分类器Collector。Collector不可单独运行。需要结合下载器(Harvester)运行。可以选择在下载器(Harvester)运行完成后组合为一个工作流,或与下载器组合为一个工作流。一个工作流中单个查询节点可以运行多个Collector。Collector的功能在于解析Html内容。解析的目标是可设定的,即需要对网站提取的信息。为保证提取的精度,若需要对页面进行二次解析(如抓取回复信息,Collector会解析网站下一页地址)。Collector解析相关的连接后,将传递给网站种子管理器Seeder模块。
通过上述系统,MapReduce通过把对数据集的大规模操作分发给网络上的多个查询节点给予实现,每个查询节点会周期性的返回本地所完成的查询工作和最新的处理能力值,或状态值。如果其中一个查询节点“保持沉默”超过一个预设的时间间隔,汇聚处理节点(类同GoogleFileSystem中的主服务器)将记录下这个节点状态为“死亡”,并把分配给这个节点的数据发到别的节点。通过之前的种子器(Seeder)、下载器(Harvester)、分类器(Collector)设计工作流通过MapReduce定时或者定量的分发给网络节点进行计算。从而利用MapReduce实现基于Hadoop集群的Web信息的提取任务。
组织层102配置为存放本地网站种子列表的HDFS文件格式的Hbase类型内存数据库层。在用于对捕获层的数据进行存储的同时,并进行容灾备份。组织层借由内存数据库设计了数据操作队列。数据请求将加入队列,也对数据库由出队的数据请求做出相应反应。提高了数据库集群的稳定性。
分析层103一方面从组织层获取数据,另外一方面为决策层提供“友好”的用户接口,譬如通过CDH可视化集群管理工具提供给开发人员以管理集群与操作Hadoop相关模块的功能。向用户提供数据查询、数据索引等操作的输入界面。此外,通过HadoopAPI也能够从Java访问到集群的HDFS、MapReduce、Hbase等模块。从而实现数据的查询主要使用Lucene全文检索引擎架构,并与Hadoop结合。分析层是结合Hadoop集群通过MapReduce实现的,利用Lucene分布式索引提供接口实现分布式查询。构建索引的指令发出后,通过分析索引处理量的大小以及各查询节点索引的分布情况来确定开启多少个Map任务以及Reduce任务,之后各节点下载需要索引的信息到本机,并通过Lucene的接口构建索引存储到本机。查询工作由查询指令发出后,通过Lucene接口对查询语句进行抽象,并且将查询信息传递到各个索引机器上,查询汇总到查询服务器,查询服务器再分析搜索结果返回一个可视化界面给查询用户。
决策层104使用分析层103所提供的接口搭建“应用平台”提供给用户使用。决策层104作为上层应用的支撑框架,利用分析层提供的大量API给应用程序开发人员来调用或者设置系统。决策层是用户、管理员、开发者的层面,在这里通过使用可视化界面或者API对系统所提取到的海量信息数据进行分析与统计。决策层设计主要基于模式识别、数据库、机器学习、人工智能、统计学以及可视化技术等为基础的应用,使之能够自动化分析已知的数据,做出归纳性的推理,从海量数据中揭示挖掘出先前未知的、隐含潜在的价值信息模式,从而辅助决策者做出正确的决策。
如图3、4所示,在本发明的一种实施方式中,还提供了一种大规模Web信息提取方法,包括以下步骤:
步骤S101:确定“提取条件”。决策层104通过用户界面接收用户所要提取的网页“提取条件”,即,从NodeA处接收到“提取条件”,该“提取条件”一般为指定的网页及其网页特征信息或关键字或某一个字段,例如:“足球”。
步骤S102:获取查询网站种子及各查询节点处理量。捕获层101在接收到步骤S101中所获得的“提取条件”后,调用网站种子管理器Seeder从本地内存或组织层102数据库中,调取“待查询网站种子”列表。同时捕获层101对多个查询节点Node1~8下发“查询节点处理量”上报指令,查询节点Node1~8在接收到该上报指令后,向汇聚处理节点NodeA返回自身的“处理量”。需要说明的是,上述查询节点Node1~8的处理量,也可以实时获得,并定时更新,当查询节点Node1~8需获得这一数据时,可以直接这从捕获层101中读取。
当“提取条件”为“关键字”或其他名词类属性字段时,为使上述“查网站种子”的提取更为准确。如图5所示,在上述步骤中包括:
步骤S1021-1:获取属性归类。若当前的提取条件为某一关键字,则根据本地的数据库属性归类表格,获取该关键字的属性归类,在该属性归类表格中,单一大类与多个小类相对应、例如:当关键字为“足球”时,相应的属性归类为“体育类”。
步骤S1021-2:获取归类种子列表。根据步骤S1021-1中所获得的属性归类,从网站种子列表中提取归类种子列表。如,从网站种子列表中提取“体育类”的种子列表。
步骤S1021-3:提取查询网站种子。根据关键字从步骤S1021-2中所获得的归类种子列表中提取查询网站种子。如,根据关键字“足球”从“体育类”种子列表中提取查询网站种子。
在本发明的一种实施方式中,还可进一步通过当前用户的标识对查询网站种子实现定向提取,如图6所示,在上述步骤中包括:
步骤S1022-1:获取用户标识。根据当前用户的登录名称或地址获取当前用户标识。
步骤S1022-2:获取历史种子列表。根据步骤S1022-1中所获得的当前用户标识,从网站种子列表中提取该用户的历史链接列表即用户历史种子列表。
步骤S1022-3:提取查询网站种子。根据设定提取条件从步骤S1022中所获得用户历史种子列表中提取查询网站种子。
在本发明的一种实施方式中,还可进一步通过用户对提取条件的限定,对查询网站种子实现定向提取,如图7所示,在上述步骤中包括:
步骤S1023-1:获取用户限定条件。根据用户界面,接收当前用户的限定条件,如:信息的更新时间或创建时间。
步骤S1023-2:获取用户限定种子列表。根据步骤S1023-1中所获得的当用户限定条件,从网站种子列表中提取用户限定种子列表。如在网站种子列表中,根据网页的更新时间或创建时间,对网站链接进行提取。
步骤S1023-3:提取查询网站种子。根据设定提取条件从步骤S1032中所获得用户限定种子列表中提取查询网站种子。如:根据“足球”对2010~2013的列表进行查询。
需要说明的是,上述“查询网站种子”可通过多种方式给予存储,如:列表或数据库格式,网站种子列表数据库为HDFS文件格式的Hbase类型的内存数据库。
另外,上述3种查询网站种子的提取方法,既可以独立使用,也可以同时两两结合使用。从而,使对网站种子的提取更为准确。
步骤S103:进行分割。根据步骤S102中获得的各查询节点的“处理量”及“待查询网站种子”。根据均衡各节点负载的方式,对已分割的网站种子列表进行均衡分配。该“负载均衡分割”可通过HadoopMapReduce框架给予实现,数据分割作为HadoopMapReduce框架的基础概念之一,定义了单个Map(即查询节点Node1~8)任务的大小及其可能的执行服务器信息。其中,记录读取器主要负责从输入文件实际读取数据并将它们(以键值对的形式)提交给mapper。分割可以采取表分割与文件分割两个方式。表分割主要是将数据库中的网站种子列表通过分割算法,将检索部分内容作为一个分割部分进行分割。列如:针对一张待查询网站种子列表(即待查询网站种子所组成的列表)。该表可存储在NoSql中或者Sql中。通过MapReduce提供的TableInputFormat分割方式。分割可对应于一系列属于某个表区域(tableregion)的表键(tablekeys),而位置则为正在运行区域服务器的机器,例如:表区域为W1位置区域,则隶属于该位置区域的查询节点就为Node1~4。例如:通过检索与“足球”相关的标签网页种子生成临时表格并作为输入文件执行提取任务。文件分割则是读取“待查询网站种子列表”按照行或者自定义分割方式获取部分内容并根据这部分内容建立新文件,例如:首先,文件分割是基于文件的。需要使用MapReduce默认提供的任务输入方式FileInputFormat。该方式对于单文件使用文件大小作为判断标准,对于多文件则根据输入文件夹的文件数作为判断标准。默认读取方式是以行为分割读取文件中每一行的信息交给mapper。文件的来源是由用户创建以及编辑生成的。该方式作为用户自定义方式开启数据提取流程。通过分割的“待查询网站种子列表”将传输给MapReduce的服务端(Jobtracker)进行临时存放。为了使上述分割更为准确,在分割前对“待查询网站种子列表”进行分类,能够细化任务粒度,分配给适合该任务的机器执行,并且能在HDFS文件格式中区分抽取结果。例如:用户使用关键字“足球”进行搜索。平台会可开启新的提取流程。在第一步分割任务列表时会根据网页种子的标签:足球、篮球、民生等进行分类抓取。由带有足球标签的网页提取所得的数据会单独使用一个Reduce程序使之抽取结果分类汇总。
为实现较大提取任务的分割,如图8所示,在本发明的一种实施方式的中,包括:
步骤S1031,获取总处理量。根据待查询网站种子的链接数量或历史处理量记录,获取总处理量。例如,可根据当前待查询网站种子的数量:10,链接数量总计200获取总处理量,即可通过每个链接的单位时间的处理量,来估算总处理量。或者,通过当前待查询网站种子的历史处理量的记录,来估算总处理量。
步骤S1032,进行任务拆分。若步骤S1031中所获得的总处理量大于各查询节点的处理量之和,即节点Node1~8的处理量之和,则根据查询节点的处理量之和将总处理量拆分为多个任务处理量。如,当前总处理量为100M,而节点Node1~8,在单一处理周期中的处理量为50M,则拆分为第一任务处理量及第二任务处理量。
步骤S1033:将待查询网站种子分组。根据所述多个任务处理量,将待查询网站种子拆分为多组待查询网站种子。例如:将占用第一任务处理量的网站种子分为一组,即第一组网站种子、将占用第二任务处理量的网站种子分为一组,即第二组网站种子。
步骤S1034:获取多组待查询种子。根据各查询节点的处理量,分别对多组待查询网站种子进行负载均衡分割,获取各查询节点的多组待查询种子。例如,根据50M的处理量在第一组网站种子中进行分割,获取各查询节点的第一组待查询种子,之后,再根据余下的50M的处理量在第二组网站种子中进行分割,获取各查询节点的第二组待查询种子。
步骤S104:下发列表。根据步骤S103所获得的各查询节点的查询任务分配量,对各查询节点下发查询网站种子列表。
步骤S105:本地提取。各查询节点根据所下发的待查询种子列表,在本地,根据网页结构及抓取策略对网页进行提取。若提取任务已进行拆分,则在查询节点进行提取时,需按顺序进行第一组待查询种子的提取及第二组待查询种子的提取。
步骤S106:汇聚后获得提取信息。各查询节点将从本地提取的网页进行上报到汇聚处理节点。汇聚处理节点,将各查询节点上报的网页信息汇聚后获取大规模Web信息。在各查询节点将本地提取信息上报的过程中,为便于汇聚处理节点的“汇聚”处理,应在各查询节点的上报信息中,附带各查询节点标识,从而使汇聚处理节点在“汇聚”操作时更为准确。
从而,本方法借助于云计算平台,基于Hadoop集群的并行计算与分布式存储能力,利用云计算技术获取网络中强大的计算资源,将复杂的、消耗大量计算资源的提取过程通过Hadoop集群分配到多个节点上进行,是当前一种较为有效的解决方案。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。