雲端運算可以分為兩類型態, 

一類是Scale-up型式: 主要是以虛擬機器(VM)達成實體主機資源充份運用的目的, VMWare, Amazon EC2 (base on Xen), Linux KVM等等, Xen更是許多大廠此類雲端技術的基礎, 例如IBM Blue Cloud。缺點是整體系統的可擴展性會受限於單一主機的硬體可擴展性, 但應用系統幾乎都不需要改寫是其優勢。 

另一類是Scale-out型式: 下文中所提到的Hadoop即為其中最具代表者,  Hadoop則是以Google幾篇重要的雲端運算論文為基礎, 全部以Java重新實作(也有其他的實作存在), Yahoo應該是現在最大的使用者, Google cloud當然是以此發展出來的, 主要是用於巨量運算及巨量資料處理的情境。缺點是某些領域並不適用, 且幾乎都需要依MapReduce方式改寫, 而被處理的巨量資料, 也需要適當地被重新組織及分割成分散式儲存型式, 但優點是可擴展性幾乎沒有限制

 

由於我自身對於雲端運算,並不熟悉,單純只是好奇,所以在研讀相關文件之後,特別請孫德華老師協助確認該文的觀念是否有重大偏誤的地方,而上文就是他建議我進行修正的方向。那麼這一篇,將先簡單的說明第二類Scale-Out型式,其基本的架構型式如下,希望對有興趣的網友有幫助

 MapReduce.jpg 

 如上圖所示,最底層是具有叢集能力的硬體系統,而最上層則是應用系統,例如GoogleYahooFacebook的網站服務。但真正有趣的重點,是中間的MapReduceHBaseHDFS,這三個模組構成了雲端運算的核心,本篇目標也在簡單的介紹此三個模組。

 

HDFS

HDFS,從其原文可以簡單的看出來,它就是雲端計算中的檔案系統。簡單的說,雲端運算的觀念是,當需要計算的時候,不要大量的移動資料,而是移動運算能力至資料端,這樣成本會比較低。所以,HDFS中有一個管理檔案分布的系統,它主要功能就是將單一資料分拆並複製至多個儲存點中,當需要進行運算時,HDFS中的管理檔案系統就會告訴系統,在什麼node中可以就近取得這些資料,或當檔案毀損時,什麼地方有複本可以利用;但從上文,我們也可以發現,整個HDFS的核心管理是整個檔案系統最弱的一環,資料的分布情況都要靠它索引,所以,這個部份需要定時保存資料,一旦毀損才有辦法還原,但根據Google的研究,此部份毀損的機率並不高,利用定時保存的方式應該已經足夠了。

 

MapReduce

MapReduce應該分拆為兩個部份來看,一個是Map,另一個為ReduceMap代表的是將一個問題(這裡指數學運算),分拆開來平行計算,每一個Map都各自運算自身的資料。但計算完成後,還要將散落在各地方的結果整併在一起,這就是Reduce。舉例來說,假設我們要了解一個海量文字檔之中特定的字(Ex: Name這個字)出現多少次? 利用一般的循序搜尋可能要花上一大堆的時間才能完成,利用MapReduce的機制,就可以將海量的文字切割成數個,並交由Map機制去進行計算,計算完成後,再將各自結果送至Reduce去進行加總就可以了。由於這類計算方式,具有相同的同質性,所以又被稱為向量運算。那麼,到底需要什麼樣的向量運算? 則是依上方的應用程式來決定,並加以實作出來。

 

HBase

從上圖中可以看出來,HBaseHDFS之上,我們可以直接將它視為資料庫。只不過這類的資料庫跟我們過去所了解的關聯式資料庫差別很大。現行我們使用的關聯式資料庫,其優點是透過正規化可以節省儲存空間,只要透過Join我們就可以得知完整的資料結果,但其缺點則為彈性擴張較不易。而HBaseGoogleBigTable設計,比較類似一個大型的Excel,上面有無限多的ColumnsRows可以擴張,沒有正規化與Join的觀念,而為了效率,BigTable上面利用Family Columns將相似的欄位群聚在一起,用於強化效率

創作者介紹

Min's Web Life: 談網路產業研究與生活閒聊

miin1130 發表在 痞客邦 PIXNET 留言(0) 人氣()