引言
海量數(shù)據(jù)的使用越來越受到人們的關(guān)注,如何實(shí)現(xiàn)為海量文本數(shù)據(jù)快速創(chuàng)建索引以供用戶檢索已經(jīng)成為當(dāng)前面臨的一個(gè)重要課題。傳統(tǒng)的集中式索引方案已經(jīng)無法滿足需求,隨著MapReduce機(jī)制的出現(xiàn),人們開始研究使用MapReduce進(jìn)行分布式索引的方案。現(xiàn)有的基于MapReduce的方法都局限于MapReduce的原始框架,無法處理數(shù)據(jù)量大、不可分割的文檔,也缺乏對(duì)海量索引的管理機(jī)制。因此,通過對(duì)現(xiàn)有方法的改進(jìn),本文設(shè)計(jì)了一種面向海量大文本的MapReduce索引方法,通過實(shí)驗(yàn)測(cè)試了改進(jìn)方案的索引性能。
1 MapReduce簡(jiǎn)介
MapReduce是一種通過將任務(wù)分發(fā)到多臺(tái)機(jī)器上來處理大規(guī)模數(shù)據(jù)的編程模式。它最初是由Google設(shè)計(jì)的,用于利用分布式架構(gòu)來處理大數(shù)據(jù)集上的計(jì)算任務(wù)。一個(gè)MapReduce工作主要使用Map和Reduce兩個(gè)函數(shù)。Map函數(shù)接收一個(gè)<key,value〉鍵值對(duì)作為輸入,然后通過特定的計(jì)算輸出一組中間鍵值對(duì)<key,value〉。所有Map函數(shù)的輸出鍵值對(duì)將會(huì)自動(dòng)按照key進(jìn)行排序和分組,然后傳送給Reduce函數(shù)。Reduce函數(shù)將有著相同key的所有中間鍵值對(duì)進(jìn)行合并,得到最終的結(jié)果集。一般處理輸入數(shù)據(jù)的Map任務(wù)會(huì)比較多,而處理Map任務(wù)輸出數(shù)據(jù)的Reduce任務(wù)會(huì)少一點(diǎn)。Map任務(wù)和Reduce任務(wù)都可以運(yùn)行在不同的機(jī)器上來實(shí)現(xiàn)并行化,每個(gè)任務(wù)都是獨(dú)立于其他同類型的任務(wù)的,這就使得分布式應(yīng)用的開發(fā)變得輕松了許多。
2 MI-RM索引方法
本文設(shè)計(jì)的分布式索引方法的主要思想是:在Map函數(shù)中執(zhí)行文檔的解析及索引,而在Reduce函數(shù)中合并這些索引數(shù)據(jù),即“MapIndex-ReduceMerge”,簡(jiǎn)記為MI-RM方法。MI-RM方法采用的策略是,將文檔平均分組,每個(gè)組內(nèi)的文檔的索引數(shù)據(jù)交給一個(gè)Reduce任務(wù)來合并。Map函數(shù)輸出的中間鍵值對(duì)是〈DocGroup,DocIndex〉,其中DocGroup表示該文檔所屬的分組,DocIndex表示該文檔的索引數(shù)據(jù)。這樣,中間鍵值對(duì)的數(shù)量就會(huì)少了很多,排序的工作量會(huì)大大地減少。
Map算法的輸入鍵值對(duì)是〈DocGroup,DocPath>,即一個(gè)文檔的分組號(hào)及其存儲(chǔ)路徑。Map函數(shù)從HDFS文件系統(tǒng)得到該文檔的輸入流,并且用文檔解析器來封裝文檔輸入流,用以解析文檔格式。然后,算法即可順序讀取文檔的內(nèi)容,并將其索引到DocIndex中。索引完成后,將該文檔的索引數(shù)據(jù)按照〈DocGroup,DocIndex>鍵值對(duì)的格式輸出。
Reduce函數(shù)對(duì)同組文檔的索引嗷據(jù)進(jìn)行歸并。我們?cè)O(shè)計(jì)了支持自動(dòng)分片的Reduce函數(shù),將同組的文檔索引再次分片,合并到不同的索引片中。Reduce在合并索引數(shù)據(jù)的時(shí)候,將會(huì)控制索弓片的大??;如果索弓片已經(jīng)達(dá)到了閥值,那么就將其作為一個(gè)獨(dú)立的索引片輸出,然后再創(chuàng)建一個(gè)新的索弓片來存儲(chǔ)剩余數(shù)據(jù),如此往復(fù)。表1和表2分別展示了MI-RM的Map和Reduce函數(shù)及其算法流程。
3 測(cè)試結(jié)果
3.1 測(cè)試環(huán)境
首先,我們可以搭建包含3臺(tái)機(jī)器的集群,部署Hadoop進(jìn)行分布式索引測(cè)試。操作系統(tǒng)均Ubuntu8.10,HDFS版本是1.9.2。
本文使用數(shù)據(jù)生成器隨機(jī)生成了18個(gè)大小為10MB的文本進(jìn)行測(cè)試。因?yàn)闇y(cè)試環(huán)境有限,本文沒有使用大的數(shù)據(jù)量,文本的數(shù)量選擇為18是考慮到它正好是節(jié)點(diǎn)數(shù)的整數(shù)倍,可以使得任務(wù)在各節(jié)點(diǎn)上并行的運(yùn)行。
3.2 結(jié)果與分析
在測(cè)試中,我們將MI-RM索引方法配置為18個(gè)Map任務(wù)和3個(gè)Reduce任務(wù)。其中每個(gè)節(jié)點(diǎn)上可以并發(fā)地執(zhí)行6個(gè)任務(wù),也就是說,Map任務(wù)的最大并發(fā)量為6。測(cè)試結(jié)果如下:Map執(zhí)行的總時(shí)間為34.253s,Reduce執(zhí)行的總時(shí)間為35.515s,總的執(zhí)行時(shí)間為45.232s,而采用集中式索引方法處理同樣的數(shù)據(jù)則需要97.232s,該結(jié)果體現(xiàn)了MI-RM索引方法的效率要優(yōu)于傳統(tǒng)的集中式索引方法。
4 結(jié)語(yǔ)
本文探討了一種基于MapReduce的分布式索引方法,并與集中式索引方法做了測(cè)試比較,通過實(shí)驗(yàn)表明這種方法能夠減化文檔排序的工作量,從而提高建立文本索弓啲效率,能夠滿足海量文本數(shù)據(jù)檢索的需求。
今天,小編將在這篇文章中為大家?guī)泶髷?shù)據(jù)的有關(guān)報(bào)道,通過閱讀這篇文章,大家可以對(duì)大數(shù)據(jù)具備清晰的認(rèn)識(shí),主要內(nèi)容如下。
關(guān)鍵字: 大數(shù)據(jù) 分布式 Kafka北京2022年10月17日 /美通社/ -- 存儲(chǔ)設(shè)備對(duì)于客戶的核心價(jià)值就是要穩(wěn)定可靠,無需什么星辰大海也不用玄妙推演,踏實(shí)將穩(wěn)定可靠做到位、保護(hù)好客戶的數(shù)據(jù),即是最大的意義所在。 北有中關(guān)村 南有馬欄山 這里的馬欄...
關(guān)鍵字: AI 云平臺(tái) 分布式 存儲(chǔ)設(shè)備大數(shù)據(jù)將是下述內(nèi)容的主要介紹對(duì)象,通過這篇文章,小編希望大家可以對(duì)它的相關(guān)情況以及信息有所認(rèn)識(shí)和了解,詳細(xì)內(nèi)容如下。
關(guān)鍵字: 大數(shù)據(jù) 物聯(lián)網(wǎng) 分布式北京2022年10月11日 /美通社/ -- 在1992年出版的《雪崩》一書中,作者尼爾·史蒂芬森第一次提出Metaverse(元宇宙)這一概念;斗轉(zhuǎn)星移,三十年之后,隨著Roblox上市、Facebook...
關(guān)鍵字: 區(qū)塊鏈 存儲(chǔ)技術(shù) 帶寬 分布式西安2022年9月9日 /美通社/ -- 9月7日,由工業(yè)和信息化部節(jié)能與綜合利用司、國(guó)家能源局能源節(jié)約和科技裝備司與浙江省能源局聯(lián)合指導(dǎo),中國(guó)化學(xué)與物理電源行業(yè)協(xié)會(huì)聯(lián)合232余家機(jī)構(gòu)共同支持的第十二屆中國(guó)國(guó)際儲(chǔ)能大會(huì)在...
關(guān)鍵字: 電力系統(tǒng) 分布式 變流器 新能源汽車在這篇文章中,小編將為大家?guī)泶髷?shù)據(jù)的相關(guān)報(bào)道。如果你對(duì)本文即將要講解的內(nèi)容存在一定興趣,不妨繼續(xù)往下閱讀哦。
關(guān)鍵字: 大數(shù)據(jù) 云計(jì)算 分布式