看了網路上來自國家高速網路與計算中心(NCHC)deliver 一段很棒的 Hadoop 演講,我對演講中關於 Hadoop 怎麼橫空出世的這一段很感興趣,於是把重點整理成文字,作為自己在雲端計算領域的學習筆記和大家分享。
Hadoop 這個軟體最早期是由一個知名的文字索引 Project Lucent 所衍生出來的,Lucent 是一款由 JAVA 開發出來的高效率文件索引器,餵給他一份文字檔他就可以替你統計文件中哪些字出現了幾次,然後把那些出現過的字體建立變索引,早期很多網站的站內搜尋服務的文字搜尋索引功能就是使用這套 open source 的 Lucent來實作的,隨著網際網路的興趣,Lucent 漸漸發展為 Nutch (Open Source 的搜尋引擎), Nutch 是一款會自動去爬網路上特定網站,並且將爬回來的網頁文件內容利用 Lucent 建立索引,因此就可以透過 Nutch 用關鍵字來搜尋被爬過並建立索引的網頁內容,於是 Nutch 就成了一款免付費的 web search engine。
隨著處理的資料量愈來愈巨量,很快的 Doug Cutting 發現這個 2002年到 2004年中間所開發出來的 Lucent 及 Nutch 速度愈來愈慢漸漸的對於過於龐大的資料不管是儲存或是建立索引或是在搜尋方面速度都大幅的下降,不得不面對 Lucent 及 Nutch 技術架構已經無法處理巨量的資料。
這時他發現當時已經小有名氣的搜尋引擎 Google 建立了這麼巨量的網頁索引為什麼依然可以跑的這麼順暢,剛好這時 2003 Google 陸續發佈了三篇重要的論文,讓世人了解 Google 是怎麼運用三樣特殊的技術可以在爬了無數的網頁卻仍然能夠建立出索引並在使用者搜尋關鍵字時快速的根據索引產出回應,完全不會因為收錄的資料量超級無敵大就影響到資料處理的效能。
Google的這三樣重要架構分別是 Google 的 GFS 分散式檔案系統以及 平行處理運算 Map Reduce 還有 Bigtable 分散式資料庫存儲系統,有了這三樣核心技術搭配Google 的 Page Rank 演算法, Google 才能在搜尋引擎的業界成為龍頭老大。
Google 最重要的三篇論文發表時間序:
2003年 SOSP GOOGLE 公佈了 GFS論文 (Google File System) 檔案系統
2004年 OSDI GOOGLE 公佈了 MaReduce 論文 程式平行處理運算方式
2006年 SOSP GOOGLE 公佈了 BigTable 論文 DB 資料庫處理方式
不過 Google 只公佈了技術的原理並沒有公佈這三樣關鍵技術的 source code ,Doug Cutting看到這幾篇論文之後如獲至寶,因為這幾樣東西就是可以用來改善他創造的 Lucent 以及 Nutch 遇到巨量資料時程式回應效率不佳的問題。
2004 年開始 Doug Cutting 很認真的研究了 Google 的 GFS (Google FIle System) 以及 MapReduce 技術,他改寫了 Nutch 將 Google 的 GFS 以及 MapReduce 觀念引用加入,然後他將之取名為 HDFS (Hadoop distributed file system),然後在 Nutch 0.8 版本之後就把這一塊 Hadoop 獨立出來變成一個專案(覺得這個強大的東西不只能用在 Nutch 搜尋引擎)。
YAHOO 長久以來在搜尋引擎方面的技術都追不上Google,所以在 2006年的時後就把 Doug Cutting 這個強人挖角進去YAHOO,希望他在 Yahoo 導入 Hadoop 的技術以改善 Yahoo! 的搜尋引擎能力,早期只有十四個人在 YAHOO進行 Hadoop 的佈署,不過是否是後來好像這一塊也作的不太好? 因為幾年前 Yahoo 和微軟簽約使用 BING 搜尋引擎核心技術,聽說簽約沒多久後 Doug Cutting 就離開 Yahoo 了。 喔對了 大家每天在用的 Face Book 據說也是用 Hadoop 技術建構的呢 !
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Hadoop 是什麼:
Hadoop 是一個軟體開發的平台可以讓你寫程式以及執行程式來處理大量巨量的資料(PetaByte等級的資料),Hadoop 是用JAVA寫出來的,目前的YAHOO就是運行在HADOOP上有將近四千台以上的機器節點作平行的運算,創始者是 Doug Cutting 它是 Apache 軟體基金會的最高等級的開發專案之一。
Hadoop 的特色:
1. 巨量處理:Hadoop可以儲存並且能夠平行處理巨量的資料。
2. 成本便宜:不需要買強大的伺服器,只要一般的便宜的PC或是白牌電腦就可以用一群便宜的PC來組成CLUSTER。
3. 處理快速:Hadoop 是透過平行分散式的處理檔案,因此可以一個查詢下去同步的找尋快速得到回應。
4. 可靠:一個節點FAIL可以自動指派給其它節點繼續作,因為一開始設計時就假定所有節點都會壞所以當然會設計一個點壞了怎麼讓其它節點接手的機制。
沒有留言:
張貼留言