鄭睿穎 王芷婷
摘 要:分布式搜索引擎是一種結合了分布式計算技術和全文搜索技術的新型信息搜索系統(tǒng)。它改變了人們獲取信息的途徑,使得人們能夠更快捷、更有效地獲取信息。現在它已經深入到網絡生活的每一方面,被譽為“上網第一站”。文章在分析當前幾種分布式搜索引擎系統(tǒng)的基礎上,總結了現在系統(tǒng)的優(yōu)缺點,針對現有系統(tǒng)的不足,提出了給予Hadoop的分布式搜索引擎。
關鍵詞:Hadoop;分布式搜索引擎;HDFS文件系統(tǒng)
中圖分類號:TP391.3
文獻標識碼:A
近年來,隨著信息技術科技的進步,人們的生活方式發(fā)生了巨大的改變,強大的數據信息化的世界正在逐漸包裹著每一個生活在當下的人們。在人們的日常生活和工作中,信息的獲取途徑逐漸被網絡所取代,而使用者想要快速地對海量信息進行搜索就需要應用一定的媒介,即搜索引擎。與傳統(tǒng)的集成式搜索相比,分布式搜索引擎具有更加突出的優(yōu)勢,在這種情況下,積極加強基于Hadoop的分布式搜索引擎研究具有重要意義。
Hadoop是一個由Apache基金會開發(fā)的分布式系統(tǒng)基礎架構,它的產生是建立在針對Doug Cutting和Yahoo的研究之上。Hadoop對于用戶的要求并不高,只要有一定的程序開發(fā)基礎,即便不了解分布式底層細節(jié),用戶依然可以開發(fā)分布式程序。
Hadoop實現了一個分布式文件系統(tǒng)(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特點,并且設計用來部署在低廉的硬件上。而且它提供高吞吐量來訪問應用程序的數據,適合那些有著超大數據集的應用程序。HDFS放寬了POSIX的要求,可以以流的形式訪問文件系統(tǒng)中的數據。
Hadoop的框架最核心的設計就是HDFS和MapReduce。HDFS為海量的數據提供了存儲,而MapReduce為海量的數據提供了計算。
1.HDFS文件系統(tǒng)
開源版本在Google GFS中的體現就是HDFS,該分布式文件系統(tǒng)有高容錯性,數據訪問中可以實現高吞吐量,能夠對高于64MB的大文件進行海量儲存。
對于一個HDFS系統(tǒng)來說,硬件故障是常有的事。一個HDFS系統(tǒng)由成百上千個存儲數據片段的服務器構成,可想而知,如此龐大的組成部分是很有可能出現故障的,而故障所導致的后果就是部件失效。因此,故障的檢測和自動快速的恢復是HDFS一個很核心的設計目標。
在HDFS上運行的程序是有其特定的要求的,那就是必須以流的形式訪問數據集。HDFS不能進行用戶交互,其處理文件的方式是批量處理。它的特點體現在數據吞吐量上,但對于數據訪問的反應時間并沒有做過多要求。
HDFS文件系統(tǒng)還有一個顯著的特點,即大數據集。在HDFS上運行的應用程序都是擁有著大量數據的。通常情況下,HDFS文件大小為GB級到TB級。HDFS提供的空間是相當大的,一個集群中不僅能支持數百個節(jié)點,還可以支持千萬級別的文件。
2.MapReduce模型
MapReduce是一種編程模型,在2004年由Google Allo實驗室提出。它的功能是作用在集群上,對海量的數據進行并行處理。在Google內部,MapReduce的應用非常廣泛,其中包括分布grep、分布排序web訪問日志分析、反向索引構建、文檔聚類、機器學習和基于統(tǒng)計的機器翻譯等。甚至,在MapReduce得到實現之后,它被用來重新生成了Google的整個索引。由此可見,MapReduce具有非常高的性能。
最簡單的MapReduce應用程序,至少要包括三個部分:一個Map函數,一個Reduce函數,一個main函數。其中,Main函數的功能是將作業(yè)控制和輸入/輸出結合起來。Hadoop為其提供了大量接口,從而為Hadoop應用程序程序員提供了許多工具,使得操作更方便。另外兩個函數就是這個模型的核心操作。Map和Reduce函數實際上處理的都是大量像三、分布式引擎的設計與實現
分布式搜索有三個子系統(tǒng),分別是爬行子系統(tǒng)、索引子系統(tǒng)、查詢子系統(tǒng)。系統(tǒng)中利用了MapReduce模型的優(yōu)點,將上述的三個子系統(tǒng)設計成分布式系統(tǒng)。下面對這三個子系統(tǒng)進行分析。
(1)分布式爬行子系統(tǒng)。其主要功能是對網頁數據進行抓取,并進行分析提取鏈接,生成的鏈接列表為下一次爬行做準備。爬行子系統(tǒng)設計的核心就是任務調度,其所有的爬行器統(tǒng)一由JobTracker負責調度。
(2)分布式索引子系統(tǒng)。其主要負責的就是計算網頁的PageRank值,倒排文檔的構建,以及索引文件的分布式存儲。此系統(tǒng)為整個搜索引擎的核心。
(3)分布式查詢子系統(tǒng)。主要負責的是響應用戶查詢請求并向用戶返回查詢結果。查詢子系統(tǒng)采用的也是MapReduce模型設計,將Tomcat作為Web服務器,使用Jsp/Servlet技術于用戶進行交互。
在這個數字信息化大時代,在社會運行過程中都會產生大量數據。如何對這些海量數據進行處理、操作,對用戶的要求提出響應,是我們要一直探索和不斷研究的。那么,基于Hadoop的分布式搜索引擎的研究就具有重大的意義了。
[1]范晨熙.基于Hadoop的搜索引擎的研究與應用[D].杭州:浙江理工大學,2013.
[2]王振宇,郭 力.基于Hadoop的搜索引擎用戶行為分析[J].計算機工程與科學,2011,33(4):115-120.
[3]萬 軼.基于Hadoop的搜索引擎關鍵技術研究[D].武漢:武漢理工大學,2015.
[4]陳 寧,柴向陽,孫 勇.基于Hadoop的海運業(yè)分布式搜索引擎的應用研究[J].西安工程大學學報,2015(1):73-77.
[5]余 紅.基于Hadoop的分布式搜索引擎研究[D].北京:北京師范大學,2012.
[6]王俊生,施運梅,張仰森.基于Hadoop的分布式搜索引擎關鍵技術[J].北京信息科技大學學報(自然科學版),2011,26(4):53-56.