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配置:
参数指定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_
版权声明:本文标题:基于Hadoop的分布式搜索引擎研究与实现 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710898970a578600.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论