前言
1998 年,史丹佛大學的博士生賴瑞• 佩奇和謝爾蓋• 布林在車庫裡建立了Google 公司。2001 年,Google 已經索引了近30 億個網頁。2004 年,Google 發佈Gmail,提供聞所未聞的1GB 免費電子郵件——眾人還以為這是個愚人節玩笑。緊接著,Google 又發佈了Google Maps 和被稱為「上帝之眼」的Google Earth??
目前,google.com 為全世界造訪量最高的網站。Google 在全球部署了約200多萬台伺服器,每天處理數以億計的搜索請求和使用者產生的約24PB 資料,而且這些資料還在不斷迅速增長。同時,Google 的Android 智慧型手機作業系統已經擁有超過40% 的美國智慧型手機使用者,而蘋果僅以8.9% 的市佔率排名第四。社交服務Google+ 推出不到半月,使用者數量就突破1000萬,其增長速度罕見。數輛Google 無人駕駛汽車已經安全行駛了至少22.5萬公里,沒有發生過任何意外。Google 機器翻譯服務能夠實現60 多種語言中任意兩種語言間的互譯??
是什麼技術造就了這家讓人驚歎的公司?是什麼樣的平台在支撐這些讓人匪夷所思的應用?——全世界的人都很好奇。好在Google 並不保守——從2003年開始,Google 連續幾年發表論文,揭示其核心技術,包含Google 檔案系統GFS、Map/Reduce 程式設計模式、分散式鎖機制Chubby 以及大規模分散式資料庫BigTable 等。隨後,Google CEO 施密特將這種技術稱之為「雲端運算」。所謂「雲端運算」,就是用網路連接大量廉價計算節點,透過分散式軟體虛擬成一個可靠的高性能計算平台。之所以稱為「雲」,是因為我們畫網路圖的時候,總是將網路畫成一朵雲。現在,這朵雲變成了我們的「電腦」,而我們的PC、智慧型手機等則變成了它的終端,因此稱之為「雲端運算」。
2004 年,正當開放原始碼搜尋引擎Nutch 和開放原始碼全文檢索套件Lucene之父Doug Cutting 為平台的可用性和效能深受困擾時,看到了Google 發表的GFS 和MapReduce 論文,花了2 年時間將之實現,使平台的能力獲得大幅提升。2006 年,Doug Cutting 加入Yahoo!,並將這部分工作單列形成Hadoop 專案小組。Hadoop 的名稱,並不是一個正式的英文單字,而來自Doug Cutting 的小兒子對所玩的小象玩具的稱呼。Hadoop 主要由以下幾個子專案小組成。
(1) Hadoop Common:是支撐Hadoop 的公共部分,包含檔案系統、遠端程序呼叫(RPC)和序列化函數庫等。
(2) HDFS:提供高傳輸量的可靠分散式檔案系統,是GFS開放原始碼實現。
(3) MapReduce:大型分散式資料處理模型,是Google MapReduce 的開放原始碼實現。
與Hadoop 直接相關的搭配開放原始碼專案還包含以下幾個方面。
(1) HBase:支援結構化資料儲存的分散式資料庫,是BigTable 的開放原始碼實現。
(2) Hive:提供資料摘要和查詢功能的資料倉儲。
(3) Pig:是在MapReduce 上建置的一種進階的資料流程語言,可以簡化MapReduce 工作的開發。
(4) Cassandra:由Fackbook 支援的開放原始碼高可擴充分散式資料庫。是Amazon 底層架構Dynamo 的全分佈和Google BigTable 的列式資料儲存模型的有機結合。
(5) Chukwa:一個用來管理大型分散式系統的資料獲取系統。
(6) ZooKeeper:用於解決分散式系統中一致性問題,是Chubby 的開放原始碼實現。
經過5 年發展,在所有的開放原始碼雲端運算系統裡,Hadoop 穩居第一。
事實上,Hadoop 是如此受歡迎,全球已經安裝了數以萬計的Hadoop 系統。
不僅大專院校和小企業使用Hadoop,連Facebook、淘寶、360 安全衛士這樣的知名企業也在大規模使用Hadoop。2007 年,Google 開始在全球推廣「Google 101」計畫,即在全球知名大專院校為學生開設Google 模式的雲端運算程式設計課程。資助開設了MapReduce 和雲端運算技術課程,本書的部分章節內容也正是在所開設課程內容的基礎上形成的。有趣的是,由於Google 不能直接將其平台開放給學生做實驗室,於是Google 乾脆用Hadoop來架設實驗環境——可見Google 對Hadoop 的認同度。
網站上做的調查表明,網友將Hadoop 作為雲端運算領域要學習的首選技術。目前迫切需要傳授Hadoop 程式設計經驗和解決實際問題技巧的書籍。我們的雲端運算技術研發團隊長期戰鬥在儲存和處理巨量資料的前線,在實作過程中累積了一些經驗。為此,我們感覺到有必要向淘寶網核心架構團隊學習,將自己累積的點滴經驗貢獻出來與大家分享,於是萌生了創作此書的念頭。
由於編者水準有限,時間較緊,書中如有錯誤之處,敬請讀者批評指正。
意見和建議請發郵件到:
[email protected]。
新浪微博互動交流至:weibo.com/cloudgrid。