從Lucene進(jìn)入開源平臺(tái)感受到的第三點(diǎn),也是最有意思的一點(diǎn):這是一條突飛猛進(jìn)的捷徑。Lucene對原有的搜索引擎造成了很大的沖擊,因?yàn)長ucene使用成本很低,且使用效果大大好于通用的商業(yè)產(chǎn)品。經(jīng)過大量的實(shí)踐與反復(fù)改進(jìn),Lucene已經(jīng)成為世界上最受歡迎的搜索技術(shù)之一。這并非是因?yàn)樗鼊?chuàng)造了一個(gè)軟件技術(shù)的開端——也許有這個(gè)因素——但更重要的是它是開源技術(shù),能讓每一個(gè)人都能參與進(jìn)來,學(xué)習(xí)并改進(jìn)它,享受這個(gè)過程。這種開源的方法很強(qiáng)大,能讓技術(shù)走近更多人,也促使技術(shù)變得更好更快。
此外,就像Mike Olson說的,當(dāng)人們有選擇的時(shí)候,在企業(yè)專用軟件和開源軟件之間,人們總是傾向于選擇開源軟件。一輪又一輪迭代后,你會(huì)發(fā)現(xiàn)開源軟件在任何領(lǐng)域都會(huì)勝出。
Nutch、GFS和MapReduce, Hadoop萌芽在即
我開始了另一個(gè)名為Nutch的項(xiàng)目。在Lucene的基礎(chǔ)上將開源的思想繼續(xù)深化,我們從網(wǎng)頁上收集大量數(shù)據(jù),基于這些建立一個(gè)全新的開源搜索引擎,就像Google、微軟bing或其他搜索引擎,收集特定的網(wǎng)頁及鏈接,提取信息,同時(shí)處理數(shù)十億的網(wǎng)頁請求。一臺(tái)PC無法存儲(chǔ)如此大量的信息,也無法在合理時(shí)間內(nèi)響應(yīng),所以我們嘗試用分布式系統(tǒng),Nutch在5臺(tái)電腦上運(yùn)行起來。我們也把Nutch資料總結(jié)成文本放入開源社區(qū)中。
大約2003年到2004年的時(shí)候,Google發(fā)布了一些相關(guān)的研究報(bào)告,介紹了他們基于現(xiàn)有搜索引擎做的改進(jìn),吸引了我的關(guān)注。這些技術(shù)成果對我的研發(fā)有著十分直接的指導(dǎo)意義。運(yùn)用這些技術(shù),我們可以將原本需要手工操作的大量繁瑣的數(shù)據(jù)分配和空間管理等操作步驟實(shí)現(xiàn)自動(dòng)化。這兩個(gè)平臺(tái)一個(gè)是GFS(Google File System),將不同設(shè)備所產(chǎn)生的海量數(shù)據(jù)統(tǒng)一管理在同一個(gè)存儲(chǔ)空間內(nèi),與所有電腦都自動(dòng)關(guān)聯(lián),其中一個(gè)設(shè)備出現(xiàn)障礙,數(shù)據(jù)不會(huì)丟失,而且程序可以遷移到其他設(shè)備繼續(xù)運(yùn)行,所有數(shù)據(jù)資源可以共享。這種具備自動(dòng)關(guān)聯(lián)能力的數(shù)據(jù)管理是Google實(shí)現(xiàn)的一個(gè)核心突破,這使我們的操作能力可以從五臺(tái)電腦提升到成百數(shù)千臺(tái)。同時(shí),Google發(fā)布的另一個(gè)研究是有關(guān)MapReduce的,內(nèi)容是關(guān)于運(yùn)行在GFS上時(shí),如何用MapReduce進(jìn)行大規(guī)模數(shù)據(jù)的處理。
Mike Cafarella和我開始基于這兩項(xiàng)技術(shù),在開源平臺(tái)上校準(zhǔn)我們原有的程序Nutch。2005年,我們開始有數(shù)據(jù)基于20臺(tái)硬件設(shè)備在Nutch上運(yùn)行,這是當(dāng)時(shí)我們能借調(diào)到設(shè)備的最大數(shù)量。我當(dāng)時(shí)在一個(gè)非營利組織工作,Mike還沒從大學(xué)畢業(yè),20臺(tái)設(shè)備已經(jīng)是我們能籌備到的極限。以這20臺(tái)設(shè)備所支持的開發(fā)和測試情況來看,我們意識到這種數(shù)據(jù)分配的程序存在太多的bug,自動(dòng)關(guān)聯(lián)很難實(shí)現(xiàn),測試往往以失敗告終。當(dāng)你交叉驗(yàn)證時(shí),你會(huì)發(fā)現(xiàn)使用兩臺(tái)機(jī)器所產(chǎn)生的測試結(jié)果不一樣。
雅虎助力,Hadoop潛能釋放
我意識到這是一個(gè)很好的機(jī)會(huì),通過開源平臺(tái)對世界上所有的主流數(shù)據(jù)處理模式做出徹底的革新,而且基于低廉的硬件成本。如果靠單槍匹馬去實(shí)現(xiàn)這個(gè)宏偉的計(jì)劃,它會(huì)耗費(fèi)十年甚至更長時(shí)間才能最終替代現(xiàn)有的解決方案。我們需要其他幫助。
2005年底,經(jīng)過一番篩選我把目光聚焦在雅虎。雅虎對我的研究項(xiàng)目很感興趣,因?yàn)楫?dāng)時(shí)在做搜索引擎的過程中他們也有類似的困惑,合作研發(fā)也會(huì)同時(shí)幫他們解決問題。2006年,我們加入雅虎,把Nutch分布式數(shù)據(jù)管理部分重新命名為Hadoop,名字來源于我兒子的黃色毛絨玩具——一只小象。為了新項(xiàng)目Hadoop的運(yùn)行,雅虎做了大量投入。從一開始的10人工程師團(tuán)隊(duì)迅速增加到20人然后更多;機(jī)器數(shù)量也從一開始的100臺(tái),在6個(gè)月后增加到數(shù)千臺(tái)。六個(gè)月內(nèi)我們不斷測試、開發(fā)、運(yùn)行,逐漸有了成效。
從2007到2008年,切實(shí)改進(jìn)了數(shù)據(jù)關(guān)聯(lián)能力的技術(shù),其他人也開始使用,這項(xiàng)技術(shù)也開始釋放富有魔力的潛能。任何人都能下載這個(gè)開源軟件,在并不昂貴的設(shè)備上運(yùn)行非常大量的計(jì)算。Yahoo、Facebook、eBay、LinkedIn、Twitter等公司都開始以Hadoop為基礎(chǔ)搭建他們的業(yè)務(wù)。
未料及的行業(yè)滲透 Hadoop創(chuàng)造歷史
曾一度以為Hadoop能做的事情已經(jīng)完成,一切都在按預(yù)期發(fā)生。但我沒意識到的是,所有的傳統(tǒng)行業(yè)都在醞釀著變革,硬件設(shè)備已遍布如此廣泛,可用于計(jì)算的硬件已滲透到各行各業(yè)中,比如卡車、拖拉機(jī)、飛機(jī)、汽車等。所有這些傳統(tǒng)行業(yè)都在做數(shù)字化轉(zhuǎn)型,這正在產(chǎn)生更加海量更加有效的數(shù)據(jù)。運(yùn)用好這些數(shù)據(jù)能幫助人們更高效更精準(zhǔn)的管理生活。起初我并沒有意識到這一點(diǎn),曾以為只有互聯(lián)網(wǎng)公司、媒體公司才需要Hadoop技術(shù),但Mike Olson告訴我,這項(xiàng)技術(shù)已在更多行業(yè)領(lǐng)域釋放出更大的能量。所以他在2008年創(chuàng)建了Cloudera——第一家專注特定領(lǐng)域的企業(yè),也是迄今為止特定領(lǐng)域規(guī)模最大的企業(yè)。