談到成功,Cutting認(rèn)為他的成功主要歸功于兩點,一是對自己工作的熱情(Cutting在大學(xué)時就開始做Infrastracture類的程序,還用 Lisp為Emacs貢獻過代碼,他非常喜歡自己的程序被千萬人使用的感覺);二是目標(biāo)不要定得過大,要踏踏實實,一步一個腳印。
現(xiàn)在已經(jīng)被業(yè)內(nèi)稱為Hadoop之父的Cutting在Hadoop10年來到之時發(fā)表文章:Hadoop At 10: Doug Cutting src="http://upload.idcquan.com/2016/0217/1455688579522.jpg" border="0" width="498" alt="Hadoop之父Doug Cutting眼中大數(shù)據(jù)技術(shù)的未來" height="228" />
(換為本人敘述模式)2016年1月28日,是Hadoop誕生十周年。此紀(jì)念日既給予了我們機會去慶祝過去10年來 Apache Hadoop所取得的進步,也讓我們反思是如何取得今天的一切成就,同時以便更好地規(guī)劃未來的發(fā)展目標(biāo)。
Hadoop是為了大數(shù)據(jù)而誕生的,其本身就象征著本世紀(jì)工業(yè)革命的焦點:業(yè)務(wù)的數(shù)字化轉(zhuǎn)型。十年前,數(shù)字化業(yè)務(wù)僅僅在少數(shù)幾個行業(yè)中得到了應(yīng)用,例如電子商務(wù)和媒體。從那時起,我們已經(jīng)看到數(shù)字化技術(shù)將成為幾乎所有行業(yè)必不可少的一環(huán)。每一個行業(yè)都正在致力于圍繞其信息系統(tǒng)構(gòu)建數(shù)據(jù)驅(qū)動型運營模式。像Hadoop之類的大數(shù)據(jù)工具可以使各行業(yè)能夠從他們所產(chǎn)生的數(shù)據(jù)中獲得最大的利益。
Hadoop本身并非是數(shù)字化轉(zhuǎn)型的根本起因,但是它是推動這種發(fā)展趨勢的重要因素。因此,通過追溯Hadoop的發(fā)展歷史,可以更好地了解我們現(xiàn)在所處的世紀(jì)。
兩大傳統(tǒng)
在Hadoop出現(xiàn)之前,業(yè)界存在兩大軟件傳統(tǒng),Doug Cutting稱之為“企業(yè)式(enterprise)”和“黑客式(hacker)”。在企業(yè)式傳統(tǒng)中,供應(yīng)商負責(zé)向運行軟件的企業(yè)開發(fā)和銷售軟件,但是兩者之間的合作是非常少的。企業(yè)軟件依賴于一套關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)來解決幾乎所有的問題。用戶僅信任他們自己的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)來存儲和處理業(yè)務(wù)數(shù)據(jù)。如果某數(shù)據(jù)不是在該關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)中,用戶則認(rèn)為不是業(yè)務(wù)數(shù)據(jù)。
在黑客式傳統(tǒng)中,軟件主要由那些在大學(xué)、研究中心和硅谷網(wǎng)絡(luò)公司開發(fā)該軟件的相關(guān)方使用。開發(fā)人員通過編寫軟件來解決特定的問題,例如路由網(wǎng)絡(luò)流量、網(wǎng)頁生成和網(wǎng)頁服務(wù)等等。因此,Doug 選擇了后一種傳統(tǒng),十多年來一直專門致力于搜索引擎是開發(fā)工作。Doug 說他們很少使用關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),因為其沒有得到很好地擴展以搜索整個網(wǎng)絡(luò),速度非常慢,不靈活且成本昂貴。
Hadoop的發(fā)展歷史
2000年,我加入了Apache Lucene項目,第一次嘗試開源項目開發(fā)工作。該方法對他來說是一個啟迪。不僅僅可以與開發(fā)人員緊密合作,而且變更工作單位后還可以繼續(xù)為同一款軟件投入心血。但最重要的是,這極大地增長了見識:優(yōu)秀的開源項目是如何讓軟件變得大受歡迎的。如果軟件不會因許可限制而束縛,那么使用者就能夠以更為舒適的方式來使用該軟件,并基于該軟件開展自身的業(yè)務(wù),而不會存在硬依賴于不透明的商業(yè)性軟件的風(fēng)險。當(dāng)使用者發(fā)現(xiàn)問題時,他們就可以介入并協(xié)助解決這些問題,從而提升了開發(fā)團隊的規(guī)模。總而言之,開源是軟件應(yīng)用和開發(fā)的一種促進劑。
幾年后,大約在2004年左右,當(dāng)開發(fā)Apache Nutch項目時,我有了另外一個見解。當(dāng)時正試圖構(gòu)建一個可以處理數(shù)十億網(wǎng)頁的分布式系統(tǒng)。但是,不如人意的是該過程進展相當(dāng)緩慢:很難開發(fā)和運行這個軟件。聽說,谷歌公司(Google)的工程師設(shè)計了一個系統(tǒng),可以只需要幾行代碼編寫一個計算程序,該計算程序可以在數(shù)千臺機器上并行運行,并且可以在幾分鐘時間內(nèi)就能夠可靠地處理多TB的數(shù)據(jù)。之后,谷歌公司(Google)發(fā)表了兩篇論文,描述了該計算程序是如何工作的,其中最關(guān)鍵的就是一個分布式文件系統(tǒng)(GFS)與一個執(zhí)行引擎(MapReduce)。這種方式將使Nutch變成一個更可行的系統(tǒng)。此外,這些工具可能可以被用于很多其他應(yīng)用程序中。MapReduce在大規(guī)模數(shù)據(jù)分析方面展現(xiàn)出了前所未有的潛力,但當(dāng)時只提供給谷歌公司(Google)的工程師使用。
綜合開源特性在推廣科學(xué)技術(shù)方面的效能以及谷歌公司(Google)方法的廣泛適用性,我意識到采用開源的方式實施谷歌公司(Google)的想法將不僅能更好地應(yīng)用Nutch,而且很有可能成為一個非常成功的開源項目。懷著這樣的想法,Mike Cafarella和我開始在Nutch系統(tǒng)中實施這樣的分布式文件系統(tǒng)和MapReduce引擎。