admin 管理员组

文章数量: 1184232


2024年3月20日发(作者:mybatisplus整合springboot)

太原理工大学硕士学位论文

并与TermQuery共同使用。

3.Query抽象类

在分层的查询器构建方式中,最底层的是一个高度抽

象的查询类,通过继承这个类可以派生出许多查询类,实现不同类型的查询,这样的查

询类包括:关键词查询类(TermQuery)、多关键词查询类(MultiTermQuery)、布尔表

达式查询类(BooleanQuery)等。在本文所讨论的查询器模块中主要使用了以上三个查

询类,下面详细介绍这些类的功能。

关键词查询类是最基本的查询类,它以单个关键词作为查询条件,返回包含了这一

关键词的所有文档集合。关键词查询类在搜索引擎系统中特别有用,因为用户在实际使

用中,往往对所搜索信息的详情并不十分了解,仅输入一个关键词就可以获得相关网页

信息,极大的方便了用户的使用。

多关键词查询类提供了多关键词查询的功能,其基本的思想是先通过索引检索器在

索引库中找到符合匹配条件的标记集,然后通过标记集再查找文档集合。具体实现多关

键词查询器的包括:通配符查询器、模糊查询器和正则表达式查询器。

布尔表达式查询类将各种查询类型组合成复杂的查询方式,也是一种高级的查询方

式。构成布尔表达式查询的各个查询条件被称为子查询,子查询使用特殊的逻辑词限定

匹配模式,逻辑词可以是表示逻辑“或”的OR,表示逻辑“与”的AND,以及表示逻辑“非”

的NOT,还可以是这些逻辑词的组合

[35]

4.Hits类

Hits类是查询结果的集合的包装类,它是一个查询结果文档(匹配特定查询的

Documents)指针的容器,通过(n)方法可以获得指定文档对象。出于性能考虑,

Hits并没有一次性从索引中加载所有匹配的文档,而是采用增量加载,每次查询只加载

一部分,通过多次加载才能返回全部结果。

利用这四个类以及它们所提供的相关方法,就可以实现一个通用的查询模块。在模

块内部利用Map/Reduce模型,将查询任务分解为两部分:分布式查询和结果汇总,分

别封装在SearchMapper类和SearchReducer类中。程序的入口是SearchBean类,它调用

SearchMapper和SearchReducer对象执行分布式查询和汇总任务,三个类关系如图4-11:

46 

太原理工大学硕士学位论文

图4-11 查询模块类图 

Figure 4-11 Search module’s Classes Diagram

查询逻辑的全部实现集中在SearchMapper类的map方法中,主要包括以下四个步

骤:

l 初始化检索器,设置索引库参数,让其定位索引。

IndexSearcher searcher = new IndexSearcher(ataBase);

l 创建中文分词对象,负责提取关键词。

ItelAnalyzer analyzer = new ItelAnalyzer();

l 创建查询请求对象,使用中文分词对象解析用户查询字符串。

Query query = (queryString, “content”, analyzer);

l 检索索引库,获得匹配结果集。

Hits hits = (query);

检索完成后,所有的map输出Hits,SearchReducer对象接收Hits集合,经reduce

方法汇总排序后,将Hits集合合并为一个Hits对象,返回给前台界面。

4.4 本章小结

本章深入业务子系统内部,详细分析了三个子系统内部模块实现过程中相关的重要

类的实现,以及类之间的关系。对那些可以分布式执行任务的模块,应用Map/Reduce

模式,并讨论其实现细节和难点。

47 

太原理工大学硕士学位论文

第五章 系统测试与分析

5.1 实验环境

1. 硬件环境:CPU:酷睿1.86G 双核CPU;内存:1G DDR-2;硬盘:160G;

2. 软件环境:操作系统:Windows XP + CygWin;Java环境:JDK 6.0;Hadoop版

本:Hadoop-0.19.1。

3. 网络环境:由上述配置4台PC构成,PC之间由100M网互联。四台PC中的一

台作为Master节点,其计算机名为ff,另外3台作为Slave节点,计算机名分别为:

WYW、cien和yhx。外网连接使用了校园网。

5.2 分布式搜索引擎配置

由于本文所讨论的分布式搜索引擎是基于Hadoop平台开发的,系统的分布式处理

依赖于平台提供的基础功能,所以必须首先配置Hadoop分布式平台。平台的配置分为

两部分:SSH服务配置和Hadoop核心配置。

5.2.1 SSH服务配置

SSH为Secure Shell的缩写,由IETF的网络工作小组(Network Working Group)所

制定;SSH为建立在应用层和传输层基础上的安全协议。传统的网络服务程序,如FTP、

POP和Telnet其本质上都是不安全的;因为它们在网络上用明文传送数据、用户帐号和

用户口令,很容易受到中间人(man-in-the-middle)攻击方式的攻击。就是存在另一个

人或者一台机器冒充真正的服务器接收用户传给服务器的数据,然后再冒充用户把数据

传给真正的服务器。

而SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利

用SSH协议可以有效防止远程管理过程中的信息泄露问题。透过SSH可以对所有传输

的数据进行加密,也能够防止DNS欺骗和IP欺骗。SSH的另一项优点为其传输的数据

是经过压缩的,所以可以加快传输的速度。在Hadoop平台环境下,Master节点为了通

过SSH全权控制Slave节点,要求保证SSH无密码连接所有Slave节点,配置步骤如下:

(1)在构建分布式平台的所有的计算机上安装sshd服务,所有计算机建立ff用户。

48 

太原理工大学硕士学位论文

(2)免密码设置。在Cygwin控制台中输入ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa ,

这时会提示保存位置:Enter file in which to save the key(/home/ff/.ssh/id_dsa):直接回车

则id_保存到/home/ff/.ssh/目录下,在设置密钥时cat /home/ff/.ssh/id_ >>

~/.ssh/authorized_keys/home/ff/.ssh/是上一步id_保存时的目录。

(3)在Cygwin控制台中执行ssh-keygen -t rsa命令,将为Master节点的当前用户

ff生成其密钥对,密钥对的保存路径使用缺省的/home/ff/.ssh/id_rsa, 要求输入passphrase

的时候,直接回车。这样生成的证书以及公钥将存储在/home/ff/.ssh 目录,形成两个文

件id_rsa,id_。然后将id_文件的内容复制到每一台机器(包括本机)的

/home/ff/.ssh/authorized_keys文件的尾部,密钥就设置成功了。

(4)启动SSH服务,测试连接。从Master节点分别向各个Slave节点发起SSH连

接请求,确保不需要输入密码就能使SSH连接成功。通过“ssh 计算机名”命令,连接

远程计算机,如未提示输入密码,则SSH服务就配置成功了。

5.2.2 Hadoop核心模块配置

(1)平台参数配置:解压文件,打开conf文件夹编辑

文件,添加JDK安装路径,再编辑文件,添加如下XML配置:

hdfs://ff:9000/

r

ff:9001

ation

3

参数指定NameNode的计算机名和端口号。参数r

指定JobTracker的计算机名和端口号。参数ation指定HDFS中每个Block被复

制的次数,起数据冗余备份的作用。在本文的系统中,设置为3。

(2)配置Masters节点列表和Slaves节点列表,Hadoop平台通过这两个列表保证

49 

太原理工大学硕士学位论文

Master节点对所有Slave节点的控制,以及Slave节点之间的协同计算。在4节点实验

平台环境下,Masters节点列表包含一台计算机名为ff的计算机;Slaves节点列表包含3

台计算机名分别为WYW、cien和yhx的计算机。

(3)将配置好的文件复制到所有节点中,执行格式化操作,建立一个新的分布式

文件系统。在Cygwin控制台中输入bin/hadoop namenode -format,平台会自动格式化所

有Slave节点,并在Hadoop所在盘的根目录下创建tmp/hadoop-ff和tmp/hadoop-SYSTEM

目录,用来存放执行过程中的数据和结果。

(4)启动Hadoop守护进程。在Cygwin控制台中输入bin/,Hadoop平台

自动在Master节点上启动NameNode、Secondary-NameNode和JobTracker守护进程,

在所有Slave节点启动DataNode和TaskTracker守护进程,同时记录日志。通过ps –ef

命令可以看到系统中启动的Java进程。Hadoop平台启动过程如图5-1。

图5-1 Hadoop启动过程 

Figure 5-1 Hadoop Startup Procedure Diagram

(5)查看NameNode和JobTracker的网络监视器,它们的默认访问方式为:

NameNode - ff:50070/ 和JobTracker - ff:50030/。当Hadoop分布环境配置成功

后,在浏览器中输入:ff:50070/,可以看到如图5-2所示的运行情况图。

50 

太原理工大学硕士学位论文

图5-2 4节点的Hadoop分布式系统 

Figure 5-2 4-Nodes Hadoop Distributed System Diagram

图中所示的是Hadoop分布式平台的监控信息,可以看出Hadoop分布式平台成功

启动3个Slave节点,计算机名分别为WYW、cien和yhx,节点列表显示了每个节点的

运行状况和存储空间使用情况。

(6)分布式平台配置成功后,将已经打包为的系统,拷贝到所有节点的

Hadoop安装目录下面,分布式搜索引擎系统的部署就完成了。

5.3 测试数据分析

5.3.1 系统性能测试

搜索引擎业务的特点是:系统查询反馈快,网站爬行和索引构建时间长。由于查询

时间很短,容易出现误差,所以,在性能测试阶段选取了执行时间长,误差相对较小的

爬行和索引任务的总时间。为了体现不同Slave节点数量对系统性能的影响,在实验过

程中分别启动了一台、两台和三台Slave节点,构成2、3、4节点的分布式环境。

爬行的网站限定为,每个Slave节点配置为启动2个Map进程和1个

Reduce进程,每个Map启动10个下载线程。Ping 服务器的网络延迟平均

为60~70ms。第一次爬行开始于2009年10月11日,第二次爬行开始于2009年10月

12日,由于网站信息更新,第二次爬行网页数量比第一次多231个,但对结果影响不大。

51 

太原理工大学硕士学位论文

图5-3 性能测试结果 

Figure 5-3 Performance Test Result Chart 

从图5-3中可以看出,在网页量较小时,2节点比4节点效能更高。这是因为在2

节点情况下,JobTracker无需做分割任务运算,所有任务集中在单一TaskTracker运行,

不需要与其他TaskTracker传递数据,与JobTracker通信的数据量也少。而随着处理网

页量的增加,4节点系统处理效能比2节点逐渐提高, 3节点系统性能基本处于两者之

间。实验证明随着系统节点数量的增加,系统性能在一定程度上得到了提高。

同时也发现JobTracker没有好的任务动态分割算法,在一些节点的Map结束时,另

一些节点还未完成,导致Reduce处于等待状态,拖慢了整个系统的性能。

5.3.2 系统可靠性测试

Hadoop平台的HDFS文件副本参数是设置文件块Block被复制的次数,起数据冗

余和备份的作用。在本文所讨论的系统中将其设置为3,意味着同一时间,每个Block

在3台Slave节点中都会有副本,保证了数据的完整性。在测试中,随机选择了计算机

名为yhx的计算机手动关闭,模拟任一Slave节点故障环境,运行监测结果如图5-4所

示:

图5-4 一节点故障系统状态 

Figure 5-4 One Node Failure System Status Diagram

从如5-4中可以看出,3个Slave节点中,计算机名为WYW和cien的节点运行正

常,计算机名为yhx的节点,已脱离系,成为死节点。此时,对已完成的包含58730网

52 

太原理工大学硕士学位论文

页的索引库进行查询操作,针对不同关键词进行查询,结果如表5-1:

表5-1 可靠性测试结果 

Table 5-1 Reliability Test Result

关键词

汽 车

军 事

大 学

稳定可靠。

5.3.3 系统扩展性测试

4节点环境

259

227

198

1节点故障

259

227

198

可以看到任一Slave节点故障,都不会影响到系统的查询结果的完整性,证明系统

在扩展性测试中,首先构建了3个节点系统,Master节点计算机名为ff,两台Slave

节点计算机名分别为WYW和cien,系统状态如图5-5所示:

图5-5 3节点系统状态 

Figure 5-5 3-Node System Status Diagram

为了添加新节点,扩展系统规模(要添加的节点计算机名为yhx),只需将计算机名

yhx的新节点添加到Master节点的Slave列表中,格式化NameNode并重启分布式平台,

新节点就已经加入了平台。因此,系统规模很容易就可以得到扩充,如图5-6所示:

图5-6 4节点系统状态 

Figure 5-6 4-Node System Status Diagram

5.3.4 中文分词测试

对分词模块进行分词测试,输入“毫无疑问,搜索引擎已经成为互联网上人们获取

信息的最重要手段。目前,搜索引擎研究一直都处于持续升温状态。”这样一断中文,

53 

太原理工大学硕士学位论文

分词后效果如图5-7所示:

图5-7 三种分词方法效果对比 

Figure 5-7 Three Analyzer Result Comparison Chart

从图中可以很直观地看到采用智能分词后,字(词)从单字切分法的51个字,二

元切分法的43个词,到智能切分法的22个词,词汇数量有大幅下降,准确率大幅提高,

也就意味着索引效率的提高。实验结果表明,对于搜索引擎系统,采用智能分词是非常

有必要的。

5.4 本章小结

本章介绍了部署分布式搜索引擎系统的步骤,在系统成功运行后,测试系统在不同

条件下的运行数据,经分析后得出结论。

54 

太原理工大学硕士学位论文

第六章 总结与展望

近年来,分布式搜索引擎这一新兴的研究领域已成为一个大的研究热点。它包含了

分布式计算,全文检索,中文分词,以及查询结果优化等一系列技术。其中基于

Map/Reduce的编程模型由于其在分布式计算方面有着巨大的潜力,对它的研究也是日

新月异。本文采用开源的Hadoop分布式计算平台,基于Map/Reduce编程模型改进现有

搜索引擎的模块,使其具有分布式处理的能力,但受科研条件所限只建立了4节点系统。

通过实验证明,该技术是可行的。

6.1 工作总结

本文介绍了目前搜索引擎技术的研究现状,分析了几种分布式搜索引擎的关键技

术,总结了它们的优缺点,在此基础上引入一种全新的分布式编程模型Map/Reduce,

分析了这种分布式编程的基本运行原理,介绍了其开源实现平台Hadoop,在此基础上

提出了基于Hadoop的分布式搜索引擎系统。本文围绕系统的设计与实现,做了以下工

作:

(1)介绍了Map/Reduce编程模型的运行原理、特点和应用领域,进而分析了其开

源实现平台Hadoop的系统结构,节点功能,接着介绍了倒排文档基本原理和全文检索

技术。

(2)根据搜索引擎的业务特点,将系统划分为三个相对独立的子系统,并分析子

系统工作原理,以及各子系统的执行流程,包含的模块设计与实现。

(3)在Hadoop分布式计算平台上,扩展Lucene全文检索框架,实现子系统各个

功能模块。模块的实现符合Map/Reduce编程模型规范,可分布式运行。

(4)通过实验,证明Map/Reduce模型应用于搜索引擎可以提高系统性能、可靠性

和扩展性。

6.2 展望

随着计算机技术的发展,其计算能力进一步提高,集群规模进一步扩大,未来Hadoop

分布式计算平台会有更大的发展空间。但是在研究过程中也发现,Hadoop平台的

55 

太原理工大学硕士学位论文

JobTracker还缺乏好的任务分割与调度算法,偶尔会出现一些Slave节点满载,而另一

些节点空闲的情况。今后通过引入更加智能的动态负载均衡机制,添加JobTracker动态

任务分割与调度算法,充分利用节点计算能力。同时,改进中文分词和网页评分策略,

那么将构建出性能更好、搜索准确率更高的分布式搜索引擎。

总之,分布式搜索引擎是当今最具发展潜力的科学技术之一,它的出现极大的改变

了人们获取信息的途径,其未来的应用推广也必将让我们的生活方式发生重大转变。

56 

太原理工大学硕士学位论文

参考文献

[1] 周洪美.2009年中国搜索引擎用户市场调查报告[R].北京:正望咨询,2009.

[2] 张卫丰,徐宝文,周晓宇,李东,许蕾.Web搜索引擎综述[J] .计算机科学,2001,28(9):24-28.

[3] 蒋建洪.主要分布式搜索引擎技术的研究[J].科学技术与工程,2007,7(10):2418-24241.

[4] 徐高潮.分布计算系统[M].北京:高等教育出版社,2004:12-27.

[5] 董华山,孙济庆.基于P2P的分布式检索模式的研究[J]. 情报学报,2004,23(6):683-688.

[6] 陈国良.并行计算:结构、算法、编程(第2版)[M].北京:高等教育出版社,2003:59-87.

[7] 卡勒(Culler,D.E.)等著,李晓明等译.并行计算机体系结构:硬件/软件结合的设计与分析(第2

版)[M].北京:机械工业出版社,2002:10-23.

[8] 彭洪汇,林作栓.Internet上的搜索引擎和元搜索引擎[J].计算机科学,2002,29(9):30-32.

[9] Dean J,Ghemawat S.Map/Reduce:Simplied Data Processing on Large Clusters[C].San Francisco:

OSDI 2004,2004:137-1501.

[10] Jeff Dean.Experiences with MapReduce,an Abstraction for Large-Scale Computation[R].Proc.15th

International Conference on Parallel Architectures and Compilation Techniques,2006.

[11] Owen O’Malley.Programming with Hadoop’s Map/Reduce[R].ApacheCon EU,2008.

[12] Ralf Lammel,Data Programmability Team.Google’s MapReduce Programmig Model—Revisited[R].

Redmond,WA,USA:Microsoft Corp.2007.

[13] 郑欣杰,朱程荣,熊齐邦.基于Map/Reduce的分布式光线跟踪的设计与实现[J].计算机科学,

2007,33(22):83-85.

[14] Dhruba Borthakur. Hadoop Distributed File System[EB/OL]./,2007-06.

[15] Yang H C,Dasdan A,Hsiao R L,etc.Map-Reduce-Merge:Simplified Relational Data Processing on

Large V lusters [C].International Conference on Management of Data Proceedings of the 2007 ACM

SIGMOD International Conference on Management of Data.2007:1029-1040.

[16] Tom White.Hadoop The Definitive Guide[M].United States of America:OReilly,2009:35-87.

[17] 曹羽中.用Hadoop进行分布式并行编程,第1部分 [EB/OL]. 

/developerworks/cn/opensource/os-cn-hadoop1/,2008-05-22.

[18] 朱珠.基于Hadoop的海量数据处理模型研究和应用[D].北京:北京邮电大学,2008.

[19] 申展,江宝林,陈祎.全文检索模型综述[J].算机科学,2004,37(5):61-64.

[20] 韩升,刘广志.全文检索系统的数据预处理研究[J].计算机技术与发展,2006,16(3):208-21.

[21] 管建和,甘剑峰.基于Lucene全文检索引擎的应用研究与实现[J].计算机工程与设计,2007,

28(2):489-491.

[22] Chooi-Ling,Masayuki Asahara,Yuji Matsumoto.Pruning False Unknown Words to Improve Chinese

57 

太原理工大学硕士学位论文

Word Segmentation[A].Proceedings of the 18th Pacific Asia Conference on Language,Information

and Computation[C].Tokyo:Logico-linguistic Society of Japan,2004:139-149.

[23] MARTUN KOSTER.Robot in the web:threat or treat[J].ConneXions,1995,9(4):5-12.

[24] 王斌,张刚,孙健.大规模分布式并行信息检索技术[J].信息技术快报,2005,3(2):1-91.

[25] 姚树宇,赵少东.一种使用分布式技术的搜索引擎[J].计算机应用与软件,2005,22(10):127-129.

[26] 苏频,李凡长.基于DFS的并行粒计算模型及应用[J].广西师范大学学报,自然科学版,2006,

24(4):66-69.

[27] 郎小伟,王申康.基于Lucene的全文检索系统研究与开发[J].计算机工程,2006,32(4):94-99.

[28] 李晓明,闫宏飞,王继民.搜索引擎[M].北京:科学出版社,2005:22-36.

[29] 秋哲,符滔滔.开发自己的搜索引擎Lucene2.0+Heritrix[M].北京:人民邮电出版社,2007:61-97.

[30] 钱兵,王永成.面向搜索引擎的自然语言理解的设计与实现[J].计算机应用研究,2006,23(12):

260-262.

[31] 屈培,葛蓁.Nutch-0.8.1中文二分法中文分词的实现[J].计算机时代,2007,7:71-73.

[32] 潘以锋.基于Lucene的网站全文检索系统的开发[J].广西教育学院学报,2006,85(5):63-66.

[33] Erik Hatcher,Otis Gospodnetic.Lucene in Action (In Action series)[M].USA:Manning Publications

Co.,2004:107-154.

[34] Richardson,Donald Avondolio.Professional Portal Development with Apache Tools:

Jetspeed,Lucene,James,Slide[J].John Wiley&Sons,2004:59-67.

[35] Chau M,Qin Jialun.SpidersRUs:Automated development of vertical search engines in different

domains and languages[C].Proceedings of the 5th ACM/IEEE Joint Conference on Digital Libraries,

2005:110-111.

58 

太原理工大学硕士学位论文

致 谢

值此论文完成之际,首先向我尊敬的导师胡彧致以最诚挚的感谢和无比的敬意。胡

老师严谨的治学作风、渊博的学识,对知识锲而不舍追求以及优秀的人格魅力,给了我

深刻的影响,使我受益非浅,是我毕生学习的典范,并将成为我今后献身科学事业的动

力。三年的硕士生涯中,导师为我创造了良好的研究和学习环境,并在生活上、思想上

给了我极大的帮助、关心和鼓励。本文是在导师胡彧的悉心指导下完成的,胡老师在论

文各个阶段富有启发性的意见使本文得以顺利完成。

感谢太原理工大学,感谢计算机与软件学院,学校三年来给我提供的良好的学习环

境、便利的科研条件、完善的服务体系,是我得以顺利完成学业的有力保障。在三年的

学习和科研工作中,得到了学院各位老师多方面的指导和帮助,感谢他们的大力支持和

无私关怀。 

感谢我的父母以及关心支持我的亲人、朋友,他们在我攻读研究生学位期间给了我

最无私的帮助、关心和鼓励。我还要感谢我的同门师兄妹,沈晓瑞、康振华、梁学贤、

毕晋芝、卫培培以及同一教研室的许多同学,他们在我的论文完成过程中给予了我很大

的启迪、支持和热情的帮助。在此,我向他们一并表示真挚的感谢。也向一切给予我帮

助,使我顺利完成硕士研究生学业的人们表示衷心的谢意。

最后,衷心感谢为评阅本论文而付出辛勤劳动的各位专家和学者。

59 

太原理工大学硕士学位论文

攻读硕士学位期间发表的学术论文目录

[1] 胡彧,封俊.Hadoop下的分布式搜索引擎研究[J].计算机系统应用,2010.

60 

基于Hadoop的分布式搜索引擎研究与实现

作者:

学位授予单位:

封俊

太原理工大学

1.

付志超

基于Map/Reduce的分布式智能搜索引擎框架研究[学位论文]2008

2.

张密密

MapReduce模型在Hadoop实现中的性能分析及改进优化[学位论文]2010

3.

胡彧.封俊.HU Jun

Hadoop下的分布式搜索引擎[期刊论文]-计算机系统应用2010,19(7)

4.

蒋建洪

基于分布式的搜索引擎框架研究和实现[学位论文]2007

5.

陈勇

基于Hadoop平台的通信数据分布式查询算法的设计与实现[学位论文]2009

本文链接:/Thesis_


本文标签: 节点 系统 查询