版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章绪论
随着计算机技术、通信网、互联网的迅速发展和日益普及,Internet上的信息量快速增长。从海
量的信息块中快速检索出用户真正需要的信息正变得很困难,信息搜索应向着具有分布式处理能
刀方向发展,本系统利用hadoop分布式开源框架良好的扩充能力、较低的运作成本、较高的效
率和稳定性来满足需求。
现状:
缺陷和不足:
(1)结果主题相关度不高。
(2)搜素速度慢。
引入hadoop+nutch+solr的优点:
(1)hadoop平台数据处理高效。hadoop集群处理数据比起单机节省数倍的时间,数据量越大优
势越明显,满足信息采集对数据处理的速度和质量要求。
(2)hadoop平台具有高扩展性。可以适当扩展集群数量来满足E益不断增加的数据量,而这并
人会毁坏原集群的特性。
(3)安全可靠性高。集群的数据冗余机制使得hadoop能从单点矢效中恢复,即Hadoop能自动
进行数据的多次密份,以确保数据不丢失,即使当某个服务器发生故障时,它也能重新部署计算
任务。
(4)Nutch不仅提供抓取网页的功能,还提供了解析网页、建立旌接数据库、对网页进行评分、
建立solr索引等丰富的功能。
(5)通过Nutch播件机制实现了系统的可扩展性、灵活性和可维护性,提高了开发效率。能够根
据用户需求进行灵活定制抓取和解析,提高了系统使用性。
(6)通过solr集群,采用分布式索引在不同的机器上并行执行,实现检索服务器之间的信息交换,
可以通过设定主题进行索引检索。
研究目标和内容
本文的研究目标是全面深入分析研究分布式搜索引擎,进而优化分布式搜索引擎中的索引构建策
略,内容包括:
(1)深入研究hadoop分布式平针,仔细剖析hadoop中的分布式文件系统HDFS和map/Reduce
编程模型。
(2)深入研究Nutch架构、相关技术与体系结构,着重研究分析Nutch插件系统的内部结构和
流程;对protocol-httpclient插件进行开发支持表单登录:对url过滤、信息解析插件进行开发,提
高搜索的主题相关度;(实现用mapreduce的google的排序算法,改进系统搜索的关联度)。
系统功能结构
(1)本地资源解析模块
对本地文本pdf,word,excel内容解析和索引,按照主题分类,添加到相应的主题中进行搜素。
(2)搜索模块
用户根据不同主即进行内容索引、关键词查询,将跟查询关联度最高的前n个文档返回给用户,
并统计出在这些查询结果中出现频率最高的前n个词。用户可根据需求修改配置文件,提高搜索
的相关度。
(3)信息爬取模块
①信息定制采集模块
1、种子URL:用作抓取器爬取的出发点,也叫做根URL。
2、关键字:关锦字的诜择很币要,描述了抓取仟务的所届分类的主撅方向。
3、深度:由于Nutch抓取模块采用的是广度优先的策略,抓取深受的选择决定了抓取时间的长度
和抓取网页数量的大小。一般根据所选取的种子URL的类型和详细程度以及对网页抓取规模的需
求来进行设置。
在信息定制模块用户设置主题信息,url信息.、抓取深度的信息,抓取线程根据定制信息,开始
抓取工作。(综合型搜索引擎:某一主题类网站,垂直搜索引擎;博客搜索引擎)
②信息解析过滤模块
杈据fiddle讲行登录分析,修改网络协议插件,支持简单的一次跳转表单登录,用户可以在配置
文件中进行设置,然后抓取内容:复杂的登陆需要分析登陆过程,写出相对应的网络协议插件。
臼于本系统在网络资源采集过程中支持个性化定制,只对目标站点感兴趣的内容进行采集,分析
目标站点的结构特点,在页面采集完成后,从中提取出链接、元数据、正文、标题、关键字、描
述等信息,进行后续的过滤和其他处理。链接的提取首先要判断页面类型,页面的类型可以有应
答头分析得出,根据不同的类型选择相应的爬取和解析插件,时遇到带有链接的标记如<a>、
<href>.<frame>等,就从标记结构的属性中找出目标url,并从成对的该标记之间抽取出正文作
为该链接的说明文字,链接文字一般能反映文章的主题信息,系统设定阈值,判断主题和说明性
文字的相关性,对爬取链接进行过滤,加入到爬取链接列表中。定制采集的子模块,根据正则表
达式对网页内容进行过滤,获取和处理跟主题相关的内容,过滤无关的信息内容:对网页编码格
式进行提取,实现内容编码的转换。(下一步改进主题相关度链接过滤和法)
(4)系统管理模块
用户对根据需求对系统的配置参数进行修改。
论文组织结构
1、绪论。
本章首先介绍了本文研究的背景及意义,接着研究了信息采集与搜索技术的国内外发展现状,最
后给出了本文研究的内容和论文组织结构。
2、关键技术。Hadoop.Nutch,801r技术架构及文本检索算法
本章介绍了开源软件Hadoop、Nutch、Soh■的基本情况;详细介绍了Hadoop框架及其进行分布式
计算的编程模型MapReduce和数据存储系统HDFS:Nutch以Hadoop的分布式文件系统HDFS作
为底层数据平台,采用MapReduce编程方式实现数据的分布式处理,以扩展机制为突出特性,用
户可以根据实际需求对其添加插件进行扩展改进,构建自己的信息采集搜索系统;通过Solr集群,
兴用分布式索引在不同的机器上并行执行,实现检索服务器之间的信息交换,减小索引对机器的
要求,同时介绍了常用的文本检索算法VSM,pagerank和lucene默认的排序算法。
3、系统环境配置。Hadoop+Nutcb+Solr系统的运行环境配置与运行。
本章介绍配置Hadoop+Nutch+soIr系统的运行环境并详细阐述其运行流程。
4、基于Hadoop+Nutch+SoIr的信息采集搜索系统的设计与实现。
本课题采用hadoop+Nutch+Solr开源软件,缩短了开发时间并且能够根据个性化需要采集数据提
高搜素结果的精度,基于mapredjce实现了pagerank算法,将pagerank作为一个独立的索引项添
加到nutch默认的lucene排序算法中,用户可以根据需求自己定义排序的规则,提高检索的相关
度。(基于hadoop的nutch网页排序算法研究与实现)
系统相关技术介绍
Hadoop
hadoop由Apache公司于2U05年秋天作为Lucene的子项目Wutch的一部分正式引入。
Hadoop被定位为•个易于使用的平台,以HDFS、MapReduce为基础,能够运行上千台PCServer
MapReduce编程模型
MapReduce是一种编程模型,该模型将数据扩展到多个数据节点上进行处理,它最早是
Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算。并行编程模式的最大
优点是容易扩展到多个计算节点上处理数据。开发者可以很容易就编写出分布式并行程序。
mapreduce的主要思想是将自动分割要执行的问题(例如程序)拆解成map(映射)和
reduce(化简)的方式:一个MapReduce作业(job)首先会把输入的数据集分割为多个独立的数
据块,再以键值对形式输给Map函数并行处理。Map函数接受一个输入键值对的值,产生一个中
间键值对集合,由MapReduce保存并集合所有具有相同中间key值的中间value值传递给Reduce
函数,reduce对这些value值进行合并,形成一个value值集合,最终形成输出数据。处理流程
如下图:
输入务中间结果Reduce任务输出
MapReduce的处理流程
Hadoop的分布式文件系统(HDFS)
Hadoop分布式文件系统(HDFS)是GoogleGFS存储系统的开源实现,HDFS具有高容错性和高
传输率,特别适合具有大数据集的程序应用。HDFS采用master/slave架构。一个HDFS集群包含
一个单独的名字节点(Namenode)和一定数目的数据节点(Datanode)组成一个HDFS集群。
HDFS被设计成一个可以在大集群中、跨机器、可靠的存储海量数据的框架。它将所有文件存储成
block块组成的序列,除了最后一个block块,所有的block块大小都是一样的,他们存放在一组
Datanode中,文件的所有block块都会因为容错而被复制,每个文件的block块大小和容错复制份数
都是可配置的,他们在Namenode的统一调度小进行数据块的创建、删除和复制工作。
卜图所示为HDFS的体系架构
Namenode和Datanode都可以在普通计算机上运行。Namenode作为master服务,它负责管理
乂件系统的命名空间和客户端对文件的访问。NameNode会保存文件系统的具体信息,包括文件信息、
叉件被分割成具体block块的信息、以及每一个block块归属的Datanode的信息,对于整个集群来说,
HDFS通过Namenode对用户提供了一个单一・的命名空间:Datanode作为slave服务,在集群中可
以存在多个,通常每一个Datanode都对应于一个物理节点,Datanode负责管理节点上它们拥有的存
储,它将存储划分为多个block块,管理block块信息,同时周期性的将其所有的block块信息发送给
Namenode。
从上面的介绍可以看出,在搭建好的Hadoop集群上,大数据集首先会由HDFS安全稳定地分
布存储到集群内的多台机器匕再利用MapReduce模型将该数据集分解为较小的块(一般为
64MB)进行处理,特点是高效、安全、具备高吞吐量。Hadoop用户可以在不了解分布式底层细
节的情况下很好地利用该分布式平台开发分布式程序,进行高效数据存储和运算。因此Hadoop
成为管理大量数据的关键技术,在信息采集和搜索领域的使用范围越来越广。
hadoop具备以下突出的优点:
(1)hadoop平台数据处理简单高效。hadoop运行在由普通PC机组建的大型集群上,用户可以
在平台上快速编写并行代码运行分布式应用,避免耗时的数据传输问题;集群处理数据比起单机
节省数倍的时间,数据量越大优势越明显,满足信息采集对数据处理的速度和质量要求。
(2)hadoop平台具有高扩展性。可以适当扩展集群数量来满足E益不断增加的数据量,而这并
不会毁坏原集群的特性。
(3)安全可靠性高。集群的数据冗余机制使得hadoop能从单点失效中恢豆,即Hadoop能自动
进行数据的多次备份,以确保数据不丢失,即使当某个服务器发生故障时,它也能重新部署计算
任务。
Nutch
Nutch是Apache基金会的一个开源项目,它原本是开源文件索引框架Lucene项目的一个
子项目,后来渐渐发展成长为一个独立的开源项目。它基于Java开发,基于Lucene框架,提供
Web网页爬虫功能。从nutchO.8.0开始,Nutch完全构建在Hadoop分布式计算平台之上,因此
基于Hadoop的Nutch信息采集系统可以部署在由成千上万计算机组成的大型集群上,Nutch也
分为2部分,信息爬取和检索,但nutchl.2版本之后,Nutch专注的只是爬取数据,而全文检索
的部分彻底的交给solr。nutch的抓取流程中,抓取器也叫蜘蛛或者机器人,以广度优先搜索
(BFS)的方式从企业内部网或者互联网抓取网页,爬取过程包括门爬虫模块和解析模块。爬虫
程序将网页页面抓回判断格式解析数据,形成页面内容数据库。
种子url
nutch的采集过程要预先给定初始种了url,而种子url的选择将宜接影响主题搜索的质量,
因此选取初始种子url的原则是种子页面本身要具有较高的主题相关性。初始种子url既可以是一
人网站的首页,也可以是网站的子页面,关键是要尽可能的覆盖主题资源,最终实现抓取目标的
最大化,主要有四种方法生成初始种子url:
(1)人工指定:给出某个领域的权威专家给出相关的种子页面。
(2)自动生成:根据用户指定的部分关键词,并将这些关健词提交给通用搜索引擎,从检索结果
口抽取前N个页面作为种子页面。
(3)混合模式:即人工指定与自动生成相结合,首先利用通用搜索引擎获得部分相关页而,然后
经过人工筛选、过滤、合并、评价,形成一个能充分反映主题特征的种子页面。
(4)增加爬虫的学习能力:通过建立各个领域的主题种子库,并对检索历史、用户反馈信息进行
分析的基础上,动态优化产生相应主题的种子页面集。
种子的选取在实际操作中应该根据需求及领域的特征选择适当的方法。
Nutch插件机制
Nutch另外很吸引人的一点在于,它提供了一种插件框架,使得其对各种网页内容的解析、各种
数据的采集、查询、集群、过滤等功能能够方便的进行扩展,插件的扩展只需通过给定接口实现,
每个接口之下的实现相互独立,用户可以专注于目标接口的扩展而不必担心该接口与其他接口的
交互Nutch的插件体系结构。nutch使用plugin系统有三个原因:
1、可扩展性
通过plugin,nutch允许任何人扩展它的功能,而我们要做的只是对给定的接口做简单的实现。
2、灵活性
因为每个人都可以根据自己的需求而写自己的plugin,这样plugin就会有一个很强大的资源库,
这样对与应用nutch程序员来说你有了更多的关于内容爬取、过港的算法来选择。
3、可维护性
一个plugin的开发者只要关注这个plugin所要实现的功能,而不需要知道整个系统是怎么工作的,
仅仅需要知道的是plugin和plug之间交换的数据类型,这使得内核更加简单,更容易维护。
插件体系结构图___________________
〔UrlFilterURL过
滤扩展点
Nutch-site.xml定义加载的
插件
IndexFilter索
引扩展点
Analyzer分词扩
展点
各插件目录下的Plugin.xml
Parso解析扩展点
文件
OnlincClustercr集
群扩展点
图插件体系结构
插件的内部结构
Extension-point*
图插件内部结构
runtime:描述了其需要的Jar包,和发布的Jar包
requires:描述了依赖的插件
extension:描述了扩展点的实现
extension-point:描述插件宣布可扩展的扩展点
Nutch通过插件机制实现了系统的可扩展性、灵活性和可维护性,使得各个部分的开发人员只需关注
自己的领域,不必去担心如何整合系统,也极大的提高了开发效率。
爬虫技术
工、网络爬虫
网络爬虫实际上是一个基于web的程序,它从初始的种子站点出发,进行过滤检查,当爬虫
打开某个HTML页面后,它会分析HTML标记结构来获取信息,并获取指向其它页面的超级链
接,然后通过既定的搜索策略选择下一个要访问的站点。从理论上讲,如果为Spider指定个适
当的初始文档集和个适当的网络搜索策略,它就可以遍历整个网络。
为了解决Web采集的关键问题,经过不断地研究与实践,将爬行器由最早期单纯的基于整个
Web的爬行器发展到可满足不同需要的多种采集技术的爬行器。大致可以分为以下几种类型:
第一种是基于整个Web的爬行器。主要是指Fl标为从一些种子URL扩充到整个Web的
爬行器。
第二种是增量式的爬行器。传统的爬行器根据自m的需要采集足量的信息后停止采集,
当过一段时间这些数据过时后,它会重新采集一遍来代替先前的信息,称为周期性Web采集器。
而增量式的爬行器对待就的页面采用增量式更新,即采集器在需要的时候采集新产生的或己经发
生了变化的页面,而对没有变化的页面不进行采集。和周期性信息采集相比,增量式信息采集能
极大地减小数据采集量,从而极大地减少了采集的时间与空间开销。但是与此同时,增量式信息
兴集也增加了算法的复杂性和技术难度。
第三种是基丁主题的爬行器是指选择性地搜寻那些与预先定义好的主题相关的页面的爬
行器。和基于整个Web的爬行器相比,它并不采集那些与主题无关的页面,所以大大地节省了硬
件和网络资源,保存的页面也由于数量少而更新快。
第四种是基于用户个性化的爬行相。不同的用户对一个搜索引擎提交同一个检索诃,他
们期待的结果是不尽相同的。而通用的搜索引擎却只能返回相同的检索结果,这显然不完全符合
用户的需要。而基于用户个性化的爬行器是•种轻量级的采集系统,它的目标就是通过用户兴趣
制导或与用户交互等手段来采集信息,给用户提供个性化服务。
第五种是移动的爬行器。这种爬行器并不像其他爬行器一样在本地客户机向Web站点胭
务器发送页面请求,而是招自己上我到它所要采集的服务器中,在当地进行采集,并将采集结果
压缩后,再回传到本地。这样做大量地节省了Web资源,大量的剪裁工作将在被采集对象的服务
器上完成。
第六种是基于元搜索的爬行器。它对用户的提交的查询请求通过多个领域或门户搜索引
擎搜索,并将结果整合后返回给用户。一般元搜索引擎并不保存Web页面的索引文件、但是有一
些元搜索引擎会保存为它服务的每个搜索引擎的信息特征,以后根据用户请求做出选择。
NutCh使用累积式爬取与增量式爬取相结合的策略进行,既呆证了数据的完整性又保证了时
效性。
2、网络爬虫爬行策略
网页的抓取策略可以分为广度优先、深度优先和最佳优先三种。深度优先在很多情况下会导致爬虫的
陷入(trapped)问题,目前常见的是广度优先和最佳优先方法。
1、广度优先搜索
广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。
该和法的设计和实现相对简单。在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。
式面,我将以图示的方式介绍广度优先遍历的过程,如下图所示。
图()
选择A作为初始种子节点url,则广度优先搜索的过程,如表()所示。
表广度优先搜索过程
操作队列中的元素
初始空
A入队列A
A出队列空
BCDEF入队列BCDEF
B出队列CDEF
C出队列DEF
D出队列EF
E出队列F
H入队列FH
F出队列F
G入队列HG
H出队列G
1人队列GI
G出队列1
1出队列空
在表所示的搜索过程中,出队列的节点顺序即是图()的广度优先投•索过程。由此可见,图()
所示的广度优先搜索过程的顺序为:
A-B-C-D-E-F-H-G-L
2、深度优先搜索
深度优先搜索策略从起始网页开始,选择一个URL进入,分析这个网页中的URL,选择一个
再进入。如此一个链接一个链接地抓取下去,直到处理完一条路线之后再处理下一条路线,但每
深入一层,网页价值和PageRank都会相应地有所下降。图()所示的深度优先广度优先搜索过程
的顺序为:
A-B-C-D-E-H-I-F-G
3、最佳优先搜索
最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相
关性,并选取评价最好的一个或几个URL进行抓取。它只访问与主题相关的网页。
信息检索技术
信息检索(IR),通俗的讲,就是要生一个很大的文本(有时可能是其他数据,如图像等)集合中,找到
与用户需求相关的可以满足用户需求的非结构化信息。
向量空间模型(VSM)
向量空间模型将文档映射为一个特征向量V(d)=(tl,o)l(d);…:tn,3n(d)),其中ti(i=l,2,...,n)
为一列互不雷同的词条项,3i(d)为ti在d中的权值,一般被定义为ti在d中出现频率tfi(d)的函数,
即G(d)=加1(d))。
在信息检索中常用的词条权值计算方法为TF-IDF函数‘-”蚊短,其中N为所有文档的数
目,ni为含有词条ti的文档数目。TF-IDF公式有很多变种,下面是一个常用的TF-IDF公式:
以d)iog(L+0.i)
“加N
⑼(d))'xlogy+0.1)
根据TF-IDF公式,文档集中包含某一词条的文档越多,说明它区分文档类别属性的能力越低,其权
值越小;另一方面,某一文档中某一词条出现的频率越高,说明它区分文档内容属性的能力越强,其
权值越大。
两文档之间的相似度可以用其对应的向量之间的夹角余弦来表示,即文档di,dj的相似度可以表示为
£优(乙,乙)=cose=_________.
J4H⑷)(/「;(力》
进行查询的过程中,先将查询条件Q进行向鼠化,主要依据布尔模型:
当ti在查询条件Q中时,将对应的第i坐标置为1,否则置为0,即
fl
从而文档d与查询Q的相似度为
£.(4))(£力
V4-1I
在查询过程中,可以计算出每个文档与查询的相似度,进而可以根据相似度的大小,将查询的结果进
行排序。
向量空间模型可以实现文档的自动分类和对查询结果的相似度排序,能够有效提高检索效率:它的缺
点是相似度的计算量大,当有新文当加入时,则必须重新计算词的权值。
LuceneScoring评分机制
so卜使用lucene的内部评分机制,现对lucene的评分机制进行介绍。
lucene的评分公式:
score(q,d)=coord(q,d)-queryNorm(q)-V(tf(tind)idfft)2-t.getBoost()•norm(t,d))
tinq
其中:
tf(tind)关联到项频率,项频率是指项t在文档d中出现的次数frequency,默认的实现是:
tf(tind)=frequency3
idf(t)关联到反转文档频率,文档频率指出现项t的文档数docFreq.docFreq越少idf就越高。
默认实现:
numDocs
idf(t)=1+log()
docFrcq+1
coord(qfd)评分因于,是基于义档中出现查询项的个数。越多的查词项在一个义档中,说明些义档
的匹配程序越高。默认是出现查询项的百分比。
queryNorm(q)查询的标准查询,使不同查询之间可以比较。此因子不影响文档的排序,因为所有有
父档都会使用此因子。默认值:
1
queryNorm(q)=queryNorm(sumOfSquaredWeights)=
sumOfSquaredWeights'4
每个查询项权重的平分方和(sumOfSquaredWeigh⑸由Weight类完成。例如BooleanQuery
地计算:
sumOfSquaredWeights=q.getBoost()2-^(idf(()•t.getBoost())2
linq
tgetBoost。查询时期的项t加权(如:java人1.2),或者由程序使用setBoost()0
norm(t,d)压缩几个索引期间的加权和长度因子:
Documentboost-文档加权,在索引之前使用doc.setBoost()
Fieldboost-字段加权,也在索引之前调用field.setBoost()
lengthNorm(field)•由字段内的Token的个数来计算此值,字段越短,评分越高,在做索引的时
候由Similarity.lengthNorm计算。
以上所有因子相乘得出norm值,如果文档中有相同的字段,它们的加权也会相乘:
norm(t,d)=doc.getEoost(),lengthNorm(field),||f.getBoost()
fieldf'\r\。namedast
索引的时候,把norm值压缩(encode)成一个byte保存在索引中,搜索的时候再把索引中norm
值解压(decode)成一个float值,这个encode/decode由Similarity提供。
solr使用了Lucene的内核,也继承了Lucene的打分规则,我们可以根据自己的应用实现评分算法,
换掉默认的:也可以使用默认的,利用修改solr配置文件,来调节评分。
PageRank算法
••个网页的重要性等于指向它的所有网页的重要性相加之和。
如果网页j存在一个指向网页i的连接,则表明j的所有者认为i比较垂要,从而把j的一部分重要性得
分赋予i。这个重要性得分值为:
PR(〃j)为网页j的PageRank值,L(p)为网页j的出链数。
一个页面的PageRank是由所有链向它的页面(链入页面)的重要性经过递归算法得到的。
一个有较多链入的页面会有较高的等级,相反如果一个页面没有任何链入页面,那么它没
有等级。
由于存在一些出链为0,也就是那些不链接任何其他网页的网,也称为孤立网页。因此
需要对PageRank公式进行修正,即在简单公式的基础上增加了阻尼系数(dampingfactor)
q,q一般取值q=0.85。
PR(P)
PR(pj=ZE
QR(Pj)即网页i的PageRank值;所以公式的意义是:网页i的PageHank值=(1-d)
+d*(链接到网页i的所有PR,直/该网页的所有出链数量之和)。
信息采集搜索系统的安装
方系统采用分布式集群进行信息的采集与搜索,集群的配置情况如
hadoopl.l.2+nutchl.6+solr4.10
下图:
表()系统配置
序号名称描述
1Hadoopl.1.2使用MapReduce进行并行爬取,使用HDFS存储数据,Nutch的
任务提交在Hadoop集群上,支持分布式
2Nutchl.6主要负责爬取数据,支持分布式
3Solr4.10主要负责检索,对爬完后的数据进行搜索,查询,海量数据支持
分布式
4Centos6.5Linux系统,在上面运行hadoop、nutch等应用
5Tomcat7.0改用服务器,给Solr提供容器运行
6JDK1.7提供JAVA运行环境
7Antl.9提供Nutch等源码编译
8IKAnalyzer对网页内容与标题进行分词,便于全文检索
hadoop系统的运行环境配置
hadoop需要在Java环境和Unix系统下运行,也可以跨平台运行,本系统是在linux操作系统
、.运行,需要配置完成以下运行环境:
•Java环境;jdkl.7版本
vi/etc/profile
exportJAVA_HOME=/usr/jdkl.7
exportJRE_HOME=$JAVA_HOME/jre
exportCLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
exportPATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
从而完成所需要的java环境配置。
•hdduup集群配置:hddoupl.1.2
我在这里做了5个机器的hadoop集群
Master.Hadoop2
Slavel.Hadoop3
Slave2.Hadoop4
Slave3.Hadoop5
Slave4.Hadoop6
在2上
vi/etc/profile
exportHADOOP_HOME=/home/hadoopmaster/hadoop-1.1.2
exportPATH=$PATH:$HADOOP_HOME/bin
vi/etc/hosts
localhost
2Master.Hadoop
3Slavel.Hadoop
4Slave2.Hadoop
5Slave3.Hadoop
6Slave4.Hadoop
localhostMaster.Hadoop
配置无密码登录,在这里我不做介绍。
进入hadoop-1.1.2/conft'
vimasters
3(secondaryhost)
vislaves
2
3
4
5
6
vihadoop-1.12/conf/core-stie.xml
hndoopma^ter©SInvel:—/hndoop1.1.^/conf
xmlvoxmon—"1.o••
□cxnJL-n匕yJLujshuu。typu———ux-/xnl>"hxruf-“uoxi£工qu二dt工。c,xn«L•'
<conricrv>iraxzlon>
VQHOPUHVV>
<xic±xii«*>£?tf•dtflTcAulC・naime</xicuntf>
<vame*>near-i://197.iea.^7.-9ooo</va
V/p=opu=
<propercy>
<Tiame>nadoop>.tmp.dx/name>
Vva工uu>/honxu/hoicioopraa3匕u=/hadoop匕xn5></VOL工uu>
</properT;y>
VQHOQOHtyA
Vn<±iuu>U~・oHtsokvoxxiC・eix/XICAXH«=>
vve1xic*A/hcTnc/hcCoopTnAcuAT'/hcclocpdkc/f工工ccycuLm/ncTncccuonCcHYv/vc】uc>
3/Q=opu=ty>
</coTiirxcrt2x,a,exon>
conf/hdfs-site.xml
vuonU
<propercy>
<name>d£s.http.addre33</nanie>
<value>X92-168.-I7.€2:SOO7O</value>
</property>
<property>
<name>Cira.aecondary.hccp.a<3dreaa</name>
<value>192.168.47.€3:5009O</vaXue>
|</pxopexrcy>
<propercy>
<name>d£s.name.dxx</name>
</property>
<piropercy>
<name>aiTa.cSaca・dlr</name>
</propex,ty>
<propercy>
<name>d£s.repXxcat;xon</naxne>
<valu«>3</value>
viconf/mapred-site.xml
hadoopmaster@Slavel:*-/hadoop-1.1.2/conf
xmlversion-r,l.0M
xml-scylesheectype="-f->:si••—二”—「」「
<configuration>
<propercy>
<name>mapred.Job.cracker</name>
3value>192.168.47.64:9001</value>
</property>
<property>
<name>mapreci.taskxracker.map.basics.maxxmum</name>
<value>2</value>
</property>
<propercy>
<name>mapred.casJccracker.reduce•匕asks.max±mum</name>
<value>2</value>
</property>
<propert:y>
<name>mapreci.system.dir</name>
<value>/Home/hacioopma3ter/znapreduce/system</value>
</property>
<propercy>
<name>mapred.local.dlr</name>
<value>/home/hadoopmaster/mapreduce/local</value>
</propert:y>
</configuration>
把配置好的hadoop文件夹拷贝到集群的其他机器中。
nutch的运行环境配置
六载apache-nutch-1.6的源文件,把nutch导入到eclipse进行二次开发的过程在这里不做介绍。
viconf/nutch-site.xml
<property>
<name>plugin.includes</name>
<value>protocol-httpclient|urlfilter-regex|parse-(html|tika|js|pdf|msword)|recommquery|index-
(basic|anchor)|scoring-opic|urlno,malizer-(pass|regex|basic)</value>
</property>
<property>
<name>http.timeout</name>
<value>10000</value>
</property
〈property〉
<name></name>
<value>Mozilla/4.0(compatible;MSIE5.0;WindowsNT;DigExt)Gecko/20100101Firefox/20.0</value>
</property>
<property>
<name>plugin.folders</name>
<value>./src/plugin</value>
</property>
<property>
<name>http.redirect.max</name>
<value>2</value>
</property>
<propprty>
<name>http.content.Iimit</name>
<value>-l</value>
</property>
<property>
<name>file.content.limit</name>
<value>-l</value>
</property>
<property>
<name>http.accept.Ianguage</name>
<value>en-us,en-gb,en;q=0.7,*;q=0,3</value>
</property>
Nutch与solr的集成配置
L将solr/example/webapps/solr.war拷贝至(Jtomcat的webapps中
2、进入到到tomcat7中,对war进行解压,然后删除war包。
3、拷贝solr/example/lib/ext下的相关依赖jar包至ljwebapps/solr/WEB-INFO/lib中
4、修改web.xml的solr/home指定至ljsolr所在的路径。
5、修改tomcat/conf的server.xml文件中的编码加入一行URLEncoding="UTF-8"
6、solr不会自动创建core,把multicore中的coreO拷到solr/example/,拷贝nutch的配置文件schema-
solr4.xmlcoreO/conf/T,重命名scnema-solr4.xml为schema.xml,修改solrconfig.xml要和对应的core对应,
7、加入分词工具,在这里对我用的是IKAnalyzer。
基于Hadoop+Nutch+Solr的信息采集搜索系统的设计与实现
信息采集搜索系统的实现,以第二章相关技术理论分析与研究为基础,利用MapReduce编程
模型在分布式处理方面的优点,实现了pagerank算法在系统检索中的评分:对nutch的url过滤,
内容解析插件进行改进,实现了用户自订制链接和获取的主题内容:对本地资料文件实现格式识
别并抽取题名、时间、内容等文本信息保存为xml文件、实现本地相关主题信息查询。系统采用
IK分词器,最终完成了信息采集与搜索的设计与实现。
系统结构总体设计
本系统部署在hadoop+nutch+solr的集群框架匕分为四个部分,系统功能组成如下:
系统功能组成图
资料文档解析,实现单个文件和压缩文件上传,对压缩文件自动脩压;对资料文件实现多格式
识别,例如pdf,word,html,excel等格式文件,文件提取标题,作者,时间,内容等关键信息,转
换为xml文件,保存在指定路径下,对文件集建立索引,进行搜索查询。
分布式爬取,系统利用hadoop+nutch实现分布式数据爬取,对插件进行改进实现url过滤;对爬
巴的子站点网页结构进行分析,过滤那些不希望存在的文本内容,改进解析插件,实现用户可以
进行内容过灌定制,去除脚本、图片以及其它标签,获取和处理跟主题相关的内容:对网页编码
格式进行提取,实现内容编码的转换。本系统支持带有一次跳转的简单表单登陆的抓取,系统管
理中设置对应的相关信息:复杂的登陆需要分析登陆过程,另外写出相对应的网络协议插件。系
统区分领域,根据不同主题建立索引。
分布式检索,系统实现选择不同主题的core进行查询,输入查询关键词,提供检索文档中出现词
频最高的前n个词和关联文档;月户自动创建不同core,修改模板配置文件相应选项,进行替换。
系统管理,实现用户对nutch插件的修改:实现用户对简单表单登陆的相应参数修改:用户可以
改变如keywords,description,pagerank等fields索引项信息,根据站点特征,从而改变排序主题
关联度。
系统架构图
系统利用hadoop+nutch实现分布式数据爬取,基于Map/Reduce编程模型,充分利用其并行特性
进行任务分发和结果的归并,获取高效岛质的爬行结果。系统架构图如下:
Search
Tomcat
CrawlDBLinkDBSegments
MapReduce
HDFS
Hadoop
系统架构图
本系统基于五个节点的Hadoop框架实现。在Master节点、上,JobTracker负贡待爬取网页链接
的分割并将任务分配给五个节点的TaskTracker执行爬取任务。Master节点在协调整个系统分布式
处理的同时,也充当一个DataNode参与任务执行。TaskTracker接受JobTracker分配的任务后,
后动多个线程执行Map下载任务,完成网页抓取工作。TaskTracker监测到Map任务执行完毕后
启动Reduce执行数据合并任务。在HDFS文件系统中有三个数据库:CrawlDb和LinkDb存储URL
及URL互联关系,作为爬行和重新爬取的依据;Segments存储抓取的网页内容。
1、在Hadoop和nutch基础上爬取的运行流程如下图所示:
(5)updatecrawldbwithnowextractedur1s
(1)Injectstarturls
(4)Contentparscr
(2)generatesegment
(containsurlsscheduledforfetching)
indexi
fetchedcontent
Index
6
(3)fetchcontent
图hadoop+nutch爬取运行流程
读取URL种子文件到CrawlDB,然后进行下面的抓取程序:
(1)循环1-4到指定的抓取深度:
①从CrawlDB生成抓取列表:
②根据抓取列表中的URL抓取网页;
③分析处理抓取的内容;
④更新CrawlDB库。
(2)解析出文本和转换每个页面中外部对它的链接。
(3)用solr建立索引。
各个模块分析如下:
插入URL列表(Inject)
(1)将URI集合进行格式化、主题相关度过滤和合并,消除其中非法URL,并设定入了URL状
态(unfetched)和初始化分值;
(2)将URL及其状态、分值存入CrawlDB数据库,与原数据库中重复则更换成新的。
式面用Infect模块的例子说明MaoReduce的工作过程:
MapReduce程序1
目的;符输入转换为CrawlDatum格式
输入:URL文件
Map(line)-><URL,CrawlDatum>
Reduce()合并多重的URL
输出:临时的CrawlDatum文件
MapReduce程序2
目的:合并上一步产生的临时文件到新的DB
输入:上次MapReduce输出的CrawlDatum
Map()过滤重复的URL
Reduce()合并两个CrawlDatum到一个新的DB
输出:CrawlDatum
生成抓取列表(Generate)
(1)从CrawlDB数据库中将URL取出并按预设规则进行过滤。
(2)对URL进行降序排列:
(3)将排列列表写入segments目录中。
抓取内容(Fetch)
(1)对segments目录下的抓取列表依次执行抓取;
(2)抓取过程中,页面的URL地址可能会发生跳转,从而需要重定向URL地址;本系统支持带
有一次跳转的简单表单登陆的抓取,需要在配置文件中设置对应的相关信息;复杂的登陆需要分
析登陆过程,写出相对应的网络协议插件。
(3)抓取过程采用多线程方式进行,Fetch操作过程中得到页面源文件后同时也调用Parse操作,
分析处理内容(Parse)
使用对应的插件解析segments目录中由Fetch得到的页面,并进行整理,将页面分解为parse
date和parse-text,parse-date中保存的是页面的题名、作者、日期、链接等内容;parse-text中
保存的是页面的文本内容。本系统用户可对种子站点的各个子站点进行分析,自动进行分类,订
制子站点抓取的内容,提高搜索主题相关度。过波跟主体不相美的链接。
更新CrawlDB库(Update)
根据segments目录下crawl_fetch目录和crawl_parse目录中的内容,对CrawlDB进行更新,增加
新的URLo
转化链接(InvertLinks)
InvertLinks操作用来更新LinkDB,为建立索引的工作提供准备。本系统实现mapreduce的pagerank
算法,将pagerank作为一个独立的索引项添加到nutch默认的lucene排序算法中。
2、分布式索引是实现检索前的必要步骤。对于爬取的网页需要先进行解析并建立索引。流程如下
数据加工数据搜索
主题内容筛选建立索引
索引信息提取分类检索
内容分词个性化定制
文章评分
结构化数据
索引流程图
分布式索引操作从非结构化文档解析开始,提取数据库的文本内容创建相应的Document实
例,用IK分词工具对汉字实行中文分词,最后将分词存入段结构c为了提高分布式检索的性能,
需要进行内容评分排序,本系统用内cene内部评分机制,实现mwpreduce的pagerank算法,将
pagerank作为一个独立的索引项添加到nutch中:分布式索引系统的设计基于Map/Reduce编程
模型并行实现,爬行结果会以键值对(key=URL,value=Content)形式传递进行索引,苜先
JobTracker以key=URL分割网页内容,然后各个TaskTracker启动Map任务处理分配到的网页数据,
生成相应倒排索引片段,最后Reduce将各个Slave节点处理得到的索引片段合并为一个索引整体
并保存在分布式文件系统HDFS中。
(1)非结构文档解析
Lucene实现索引需要对文档格式进行解
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学四年级音乐《军队进行曲》情境律动教学设计
- 高中二年级英语全真模拟听力训练(十六)讲评教案
- 新教材高中地理 第3章 大气的运动 第3节 气压带和风带对气候的影响教学设计 新人教版选择性必修第一册
- 七年级地理下册 第四章 第二节 土地资源与农业教学设计 中图版
- 有趣的加密与解密专题 教学设计
- 高中生物人教版(2019)必修1《分子与细胞》第1节细胞是生命活动的基本单位教学设计
- 足球 正脚背带球技术 教学设计-2023-2024学年高一上学期体育与健康人教版必修第一册
- 个人信息保护实践的新质生产力
- 基于深度学习的图像识别结题报告
- 基于深度学习的图像去雨算法结题报告
- DB32/T 4462-2023河道管理范围内建设项目防洪评价技术规程
- 教学设计与教案的区别
- 超纯水设备采购合同协议
- 鞋材面料知识培训课件
- 《网络安全技术》课件第1章
- 《食品原料学》课件-第一章 食品原料学研究与发展
- GB/T 21617-2023危险品固体氧化性试验方法
- 浙教版小学人·自然·社会四年级第25课 南宋都城 课件
- GB/T 8464-2023铁制、铜制和不锈钢制螺纹连接阀门
- 校园文明教育-主题班会课件
- 2021年江苏省普通高中学业水平合格性考试物理(样卷及答案)
评论
0/150
提交评论