劉洪宇
Hadoop在中國的征程出奇地順利,從每年一次的小型窄眾沙龍,發(fā)展成為今年11月中旬,數(shù)百名愛好者參加的學(xué)術(shù)大會,僅僅用了兩年?!斑^去這是一個草根運(yùn)動,現(xiàn)在則得到了企業(yè)界的一致支持,尤其是年輕的同學(xué)們的熱情參與?!敝袊茖W(xué)院計算技術(shù)研究所總工程師徐志偉研究員對此深感欣慰。就在這兩年中,一個憨態(tài)可掬的翹鼻子小白象(Hadoop Logo)開始如那個經(jīng)典的Linux小企鵝一樣深入人心。在云計算的大趨勢下,這一開源項(xiàng)目更是以其出眾的技術(shù)特性掀起了一陣不小的“Hadoop云旋風(fēng)”。
雅虎貢獻(xiàn)不遺余力
Hadoop是一個分布式系統(tǒng)的基礎(chǔ)架構(gòu),由Apache基金會開發(fā)。借助它,用戶可以在不了解分布式底層細(xì)節(jié)的情況下開發(fā)分布式程序,并且能夠充分利用集群的運(yùn)算和存儲能力。
讓這項(xiàng)技術(shù)為人所知的是Google。Google有個公開的秘密,它在數(shù)據(jù)中心使用廉價的Linux PC組成集群,運(yùn)行它向公眾提供的各種服務(wù),而這種形態(tài)因?yàn)榉隙x,被認(rèn)為是云計算的雛形。在這樣的集群上,開發(fā)人員該如何進(jìn)行分布式開發(fā)呢?
Google有三個法寶,即核心組件GFS、MapReduce和BigTable,分別是分布式文件系統(tǒng)、分布式運(yùn)算的抽象操作以及大型的分布式數(shù)據(jù)庫。借助它們,即使是分布式開發(fā)的新手也可以迅速使用Google的基礎(chǔ)設(shè)施。Hadoop項(xiàng)目也同樣由三部分HDFS、MapReduce和Hbase組成,分別對應(yīng)Google的三大組件,是其開源實(shí)現(xiàn)。
Hadoop被認(rèn)為是云計算初級階段的實(shí)現(xiàn)。近幾年來,Hadoop之所以產(chǎn)生了吸引學(xué)術(shù)界和產(chǎn)業(yè)界的巨大魅力,特別是很多互聯(lián)網(wǎng)公司使用Hadoop進(jìn)行生產(chǎn)和運(yùn)行,主要得益于Hadoop面向應(yīng)用問題,針對處理海量數(shù)據(jù)而設(shè)計,這正是以互聯(lián)網(wǎng)公司為代表的企業(yè)所要面對的;同時,Hadoop是開放源碼軟件,交流和合作平臺也更為廣闊。
真正成就Hadoop,并從中受益最多是雅虎。據(jù)雅虎工程副總裁、Hadoop項(xiàng)目負(fù)責(zé)人Eric Baldeschwieler介紹,雅虎是第一個深入使用和開發(fā)Hadoop的公司,現(xiàn)在有超過一萬個CPU的單個集群應(yīng)用Hadoop,超過500個研發(fā)人員在使用Hadoop?!把呕⒅黜摰臄?shù)據(jù)雖然并不是直接從Hadoop上取得的,但數(shù)據(jù)處理都是在Hadoop上完成的。你在雅虎主頁上進(jìn)行搜索和看到廣告,服務(wù)后臺都是由Hadoop上的應(yīng)用完成的。雅虎Hadoop集群還有很大一部分做相關(guān)的后臺處理,現(xiàn)在也用Hadoop進(jìn)行內(nèi)容處理、垃圾郵件過濾、內(nèi)容優(yōu)化和內(nèi)容管理,雅虎提供的內(nèi)容也存儲在Hadoop平臺上。Hadoop在雅虎得到了非常全面的應(yīng)用?!盉aldeschwieler說。
身為當(dāng)今最大的Hadoop用戶,為其貢獻(xiàn)最多的也是雅虎,72%的Hadoop開發(fā)是由雅虎貢獻(xiàn)的。Baldeschwieler表示,投資Hadoop,對于雅虎來說具有戰(zhàn)略意義。而他很高興地看到,雅虎的貢獻(xiàn)率正在降低,這意味著其他機(jī)構(gòu)為開源所作的貢獻(xiàn)正在逐漸增大。“我們提供了一個Hadoop分發(fā)版本,在向外分發(fā)之前,雅虎有一組專門的集群用來測試Hadoop的性能和穩(wěn)定性。也有一個2500個節(jié)點(diǎn)的集群專門用來驗(yàn)證Hadoop新概念和新設(shè)計,最后還有一個大規(guī)模集群用于生產(chǎn)運(yùn)行。Hadoop分發(fā)版本在各個層次的集群上都經(jīng)過了運(yùn)行和驗(yàn)證?!?Baldeschwieler表示,Hadoop分發(fā)版本與雅虎內(nèi)部使用的完全一致,雅虎能做到的,其他使用者也可以做到。
Facebook嘗到了甜頭
雅虎處理的海量數(shù)據(jù)規(guī)模以及使用的大規(guī)模集群已經(jīng)在前面做好了充分的探路工作。有了雅虎牽頭示范,更多用戶開始把目光投向了這一特色鮮明的技術(shù)。Hadoop的出現(xiàn),使研發(fā)人員不需要把知識再轉(zhuǎn)移給開發(fā)人員,他們可以直接開發(fā)具有生產(chǎn)品質(zhì)的產(chǎn)品。Facebook就是其中的代表。
資深工程師邵錚介紹說,Hadoop在Facebook的應(yīng)用是從2007年中開始的,當(dāng)時Facebook的生產(chǎn)環(huán)境遭遇了傳統(tǒng)數(shù)據(jù)倉庫的可伸縮性問題,“我們發(fā)現(xiàn)需要使用超過20小時才能處理完一天的數(shù)據(jù),照這樣發(fā)展,這個時間不久就會超過一天,那樣,Facebook就沒法跟上應(yīng)用的需求了?!?/p>
在選擇解決方案時,邵錚的團(tuán)隊(duì)主要考慮三方面要求:一是可伸縮性,希望這個系統(tǒng)能支持幾百臺到數(shù)千臺集群的規(guī)模;二是開放性,系統(tǒng)能很容易地加入新功能,這樣在遇到新問題時就很容易修改;三是時間,業(yè)務(wù)需要新系統(tǒng)能盡快推出。
“我們率先排除了專有系統(tǒng),也放棄了自己從頭做起,那將花費(fèi)太多時間,而最后就在Hadoop上與其他方案進(jìn)行比較。”邵錚團(tuán)隊(duì)最后還是選擇了Hadoop。“它的性能可能不是最好的,但潛力是最大的,當(dāng)時我們使用0.15版本,遇到并且修復(fù)了很多bug,但沒有遇到大問題。”
邵錚認(rèn)為,Hadoop的可伸縮性非常強(qiáng),雅虎對Hadoop始終支持,社區(qū)不斷擴(kuò)展,很多公司在使用Hadoop,這就增強(qiáng)了團(tuán)隊(duì)的信心。但它用起來不是很方便,公司內(nèi)部除了工程師,數(shù)據(jù)分析師也希望使用這個系統(tǒng)。為此,Facebook基于Hadoop開發(fā)了Hive項(xiàng)目,使用SQL語言來操作數(shù)據(jù),這就解決了易用性的問題。10個工程師用了近6個月推出了Hive的第一個版本,并隨后將之開源。
如今,可伸縮性問題得到了較好的解決,Facebook已經(jīng)在600臺服務(wù)器上運(yùn)行,每兩周還會加入一些新機(jī)器。而開源的Hive,不僅吸收了大量代碼,而且還成為學(xué)術(shù)研究、同行應(yīng)用的通用平臺。這樣可以減少大量重復(fù)勞動,一舉多得。
好技術(shù)在中國也吃香
在中國,Hadoop也掀起了一陣不小的云旋風(fēng)。提出“框計算”概念的百度,就有這樣一支特種部隊(duì)。30多名分布式系統(tǒng)開發(fā)工程師、10多名測試工程師和多名運(yùn)維工程師組成了百度分布式團(tuán)隊(duì),承擔(dān)百度分布式平臺開發(fā)、建設(shè)及維護(hù)。該平臺承載百度大部分?jǐn)?shù)據(jù)存儲和計算服務(wù),為百度業(yè)務(wù)提供基礎(chǔ)支撐。投入使用的就有開源分布式平臺,Hadoop受到他們的密切關(guān)注。
有著云服務(wù)商雄心的中國移動也早就開展了一項(xiàng)名為“Big Cloud”的研究項(xiàng)目?!拔覀円⒁粋€大系統(tǒng),一是滿足我們內(nèi)部對HPC的需求,中國移動擁有海量數(shù)據(jù),而且還在快速增長;二是利用這些技術(shù)來建立互聯(lián)網(wǎng)服務(wù)平臺,將云服務(wù)出售給公眾?!敝袊苿油ㄐ叛芯吭涸洪L黃曉慶介紹說,中國移動在基礎(chǔ)架構(gòu)和平臺級服務(wù)的基礎(chǔ)上,希望能提供SaaS,幫助中小企業(yè)減少IT成本和復(fù)雜性。這些設(shè)想都將利用云計算來實(shí)現(xiàn)。
實(shí)現(xiàn)這些設(shè)想的就是“Big Cloud”,目前剛剛發(fā)布的Big Cloud 1.5版本就基于穩(wěn)定的Hadoop版本。“我們在Hadoop上做了很多工作,比如數(shù)據(jù)挖掘應(yīng)用,我們開發(fā)了基于Hadoop的算法,在很多實(shí)際生產(chǎn)運(yùn)行中挖掘用戶關(guān)系。與傳統(tǒng)系統(tǒng)相比,這個系統(tǒng)使用了1/6的成本實(shí)現(xiàn)了6倍的性能?!秉S曉慶說。
而作為國立研究機(jī)構(gòu),中科院計算所也長期關(guān)注并投入Hadoop研究,尤其是網(wǎng)絡(luò)重點(diǎn)實(shí)驗(yàn)室,一個重要的科研方向就是分布式系統(tǒng)軟件與網(wǎng)絡(luò)計算,這正是云計算的核心技術(shù)。列存儲并行數(shù)據(jù)處理系統(tǒng)等一系列科研成果正是基于Hadoop平臺?!艾F(xiàn)在我們正走向云計算,要考慮云計算在中國怎么為老百姓,為這些未來上十億的IT用戶服務(wù)。我們叫它普惠計算,已經(jīng)開始看到一些基礎(chǔ)應(yīng)用,這是中科院計算所今后幾十年的一個重要任務(wù)和研究機(jī)會?!毙熘緜ケ硎?。