處理大量APP開(kāi)發(fā)的數(shù)據(jù)
- 編輯:admin -在花了幾頁(yè)篇幅討論過(guò)要使存儲(chǔ)成本與數(shù)據(jù)價(jià)值相匹配,消除那些價(jià)值非常低的數(shù)據(jù)后,現(xiàn)在讓我們把注意力轉(zhuǎn)回到一- 個(gè)更激動(dòng)人心的問(wèn)題上,即當(dāng)我們的數(shù)據(jù)都是有價(jià)值的,但它們太多了,以至于我們不能高效地處理它們時(shí),我們應(yīng)該怎么做呢?
在花了幾頁(yè)篇幅討論過(guò)要使存儲(chǔ)成本與數(shù)據(jù)價(jià)值相匹配,消除那些價(jià)值非常低的數(shù)據(jù)后,現(xiàn)在讓我們把注意力轉(zhuǎn)回到一- 個(gè)更激動(dòng)人心的問(wèn)題上,即當(dāng)我們的數(shù)據(jù)都是有價(jià)值的,但它們太多了,以至于我們不能高效地處理它們時(shí),我們應(yīng)該怎么做呢?
如果你曾經(jīng)上過(guò)代數(shù)課,那么很可能你已經(jīng)知道這個(gè)問(wèn)題的答案了。還記得你的代數(shù)或微積分老師曾教過(guò)你的,在解方程之前,要把它們簡(jiǎn)化嗎?同樣地,這種幫助你成功解決數(shù)學(xué)問(wèn)題的建議也能夠幫助你成功解決處理大量數(shù)據(jù)的問(wèn)題。
如果可以輕松地把數(shù)據(jù)分段或者把它們關(guān)聯(lián)到服務(wù)上,那么我們只需應(yīng)用在第22章到第24章中學(xué)到的概念即可。AKF擴(kuò)展立方就能夠解決你的需求。但當(dāng)你需要遍歷整個(gè)數(shù)據(jù)集才能生成一個(gè)答案,如要統(tǒng)計(jì)美國(guó)國(guó)會(huì)圖書(shū)館中所有圖書(shū)中的單詞數(shù)量,或者要盤點(diǎn)某個(gè)非常大且很復(fù)雜的存貨系統(tǒng)時(shí),又該如何做呢?如果我們想迅速地做完這種事,我們就需要找到一種有效的分布工作的方法。這種工作分布可以采用多次遍歷系統(tǒng)的形式,第- -次遍歷分析(或映射)工作,第二次遍歷計(jì)算(或簡(jiǎn)化)工作。Google引人了一種軟件框架來(lái)支持這種大型數(shù)據(jù)集的分布式處理,稱為MapReduce。“下面是對(duì)這種模型的描述以及如何應(yīng)用它來(lái)解決較大問(wèn)題的示例。
簡(jiǎn)而言之,MapReduce具有一個(gè)映射( map)函數(shù)和一個(gè)簡(jiǎn)化( reduce)函數(shù)。映射函數(shù)的輸人是一個(gè)鍵值對(duì),它會(huì)生成一個(gè)中間的鍵值對(duì)。外行可能不會(huì)立刻發(fā)現(xiàn)它的有用之處,但這里的目的是讓一個(gè)APP開(kāi)發(fā)分布式進(jìn)程為另一個(gè)分布式進(jìn)程創(chuàng)造出有用的中間信息,以便后者進(jìn)行編譯。輸人的鍵可能是文檔的名字,或者是指向文檔中的一段的名字或指針。值可以是文檔中所有詞語(yǔ)構(gòu)成的內(nèi)容。在我們的分布式存貨系統(tǒng)中,鍵可以是存貨的地點(diǎn),值可以是這個(gè)地點(diǎn)貨物的名字,庫(kù)存中的每項(xiàng)貨物名字都會(huì)出現(xiàn)一次。例如,如果你有五個(gè)螺絲和兩枚釘子,那么值可能是螺絲、螺絲、螺絲、螺絲、螺絲、釘子、釘子。
