Google提出的分散式運算技術,讓開發人員很容易開發出全球性的應用服務,雲端運算技術可以自動管理大量標準化(非異質性)電腦間的溝通、任務分配和分散式儲存等。

雲端源自分散平行運算,但比網格更擅長資料運算
雲端技術可以算是網格技術的一個子集合,兩者目的相同,都是要把系統的複雜性隱藏起來,讓使用者只要使用而不需要了解系統內部如何運作。

各方跟進Google推廣雲端服務,但定義不同
不同業者對於雲端運算的定義各有不同,只有廣義上對於「雲模式」的概念是相通的。凡是透過網際網路提供應用服務,讓使用者透過瀏覽器就能使用,不需要了解伺服器在哪裡,內部如何運作,都被稱為雲端運算的服務。

Yahoo用Hadoop處理4 PB的網頁
Yahoo架構工程師Vivek Ratan表示:「目前使用Hadoop框架的雲端運算,任務規模最大的是Yahoo用來建立網頁索引資料庫的運算,同時使用1萬個Linux平臺的處理器核心,處理1兆個網頁連結,從4PB的資料,運算得出300TB的索引數據。」

趨勢用雲端技術解決大量資料的全球移動難題
趨勢科技4年前就開始利用平行運算的網格技術,來提供雲端服務。
使用雲端運平臺後,不論美國或臺灣的研究人員,都可以透過同一套運算平臺,共享病毒分析的資料。

雲端技術降低SaaS門檻,小公司也能做全世界的生意
工研院資訊與通訊研究所副所長余孝先認為,即使企業沒有足夠的能力或財力,自行建立自己的機房與網路架構,都能夠利用Amazon或Google的資訊架構,來提供全球性的SaaS(Software-as-a-Service)服務。

雲端運算核心技術MapReduce
雲端運算的關鍵技術MapReduce,是一種解決問題的程式開發模型,也是開發人員拆解問題的方法。最早由Google提出,後來也運用在開源的雲端技術Hadoop中。雲端源自平行運算,但比網格更擅長資料運算

最近,中研院網格計算團隊主持人林誠謙不論走到哪裡,都被問到一件事,從新加坡的學術論壇,到南臺灣的學術圈交流場合,大家都問他:「Google談的雲端運算(Cloud Computing),和網格運算(Grid Computing)有什麼不同?」


中研院網格計算團隊主持人林誠謙,也是前中研院計算機中心主任。他認為,網格運算能夠跨管理網域聯合運算資源的特性,可以解決更大更複雜的問題,雲端運算只是網格運算下的一個子集合。

林誠謙,堪稱臺灣最了解網格運算的學者之一,他在擔任中研院計算中心主任期間,一手推動了臺灣網格運算的發展,因而大家希望他能分辨出雲端運算與網格運算的差別。

雲端源自分散平行運算,但比網格更擅長資料運算
「雲端技術可以算是網格技術的一個子集合,」林誠謙說:「兩者目的相同,都是要把系統的複雜性隱藏起來,讓使用者只要使用而不需要了解系統內部如何運作。」

林誠謙認為,網格技術涵蓋了雲端技術,但是,網格能夠處理更複雜的問題,而雲端技術則可視為是網格技術的一種商業化結果。
「雲端運算是從網格技術的分散平行運算技術和觀念發展出來,業界再用新名詞來包裝原有技術,只是使用的比喻不同。」他進一步說:「對電腦產業而言,這麼做很重要,因為有助於推廣大眾對這項技術的了解。」

同樣地,國家高速網路與計算中心企業與計畫管理組計畫主持人黃維誠認為,大體上來看,雲端運算和網格運算背後的哲學是一致的,他說:「對使用者來說,不需要了解伺服器是什麼?在哪裡?就是把需求丟進去,就會得到結果,這是雲端運算的想法,也是網格運算的想法。」

再進一步分析兩者的差異,黃維誠說:「雖然雲端運算源自平行運算的技術,不脫離網格運算的哲學,但是雲端運算更專注在資料的處理。」

單次資料處理量小,讓雲端運算發展出不同於網格運算的實作方式
從處理的資料型態來看,黃維誠認為:「雲端運算適合的任務,多半是資料處理次數頻率高,而每一次要處理的資料量小。」



雲端運算vs.網格運算

雲端運算 網格運算
主要推動者  資訊供應商(如Google、Yahoo、IBM、Amazon等) 學術機構(如歐洲粒子研究中心CERN、中研院、國家高速網路與計算中心)
標準化程度 無標準化,各家採用的技術架構也不同。 有標準化的協定和信任機制
開源幅度  部分開源,目前有開源Hadoop框架,但Google GFS和資料庫系統BigTable則未開源。 完全開源
網域限制  企業內部網域 可跨企業、跨管理網域
單一運算叢集可支援的硬體 相同標準規格的個人電腦 (如x86處理器、硬碟、4GB 記憶體、Linux等) 可混合異質性伺服器(不同處理器、不同作業系統、不同編譯器版本等)
擅長處理的資料特性 單次運算資料量小(可於單臺個人電腦上執行),但需要重複大量處理次數的應用。 單次運算資料量大的應用。例如單筆數GB的衛星訊號分析。
資料來源:iThome整理,2008年6月



例如像是網頁搜尋的工作,每一次運算只需要比對一個網頁,比對資料的大小可能不超過1MB,但是,全世界有幾十億個網頁,若要全數比對,要比對的總資料量就非常可觀。黃維誠認為,這種特性與網格運算擅長的類型不大相同,網格運算適合解決科學研究,例如分析衛星回傳的資訊,每一次要分析的訊息檔案就高達數GB。

即使雲端運算與網格技術同是採用平行運算的哲學,但因為雲端運算較適合執行單次資料處理量較小的任務,黃維誠認為,雲端運算在實作方式上就會與網格運算不同。

他進一步解釋:「例如搜尋網頁,每一次要比對的網頁,其實檔案都不大,所需耗費的處理器資源不多,所以用大量的個人電腦就可以來執行網頁搜尋的運算,但是,要用個人電腦來架設網格運算就比較難,因為網格運算所需的處理資源較大。」

所以,實作的差異就是,雲端運算可以組合大量的個人電腦來提供服務,而網格運算則需要依賴能提供大量運算資源的高效能電腦。

網格技術的理想,是要讓任何伺服器,都能加入到一個運算網格中,以提供龐大的運算量,因而在技術上的困難,就是要解決不同伺服器、作業系統、甚至是程式編譯器版本差異等異質性問題。

然而,以Google的雲端運算做法為例,則是使用大量規格相同的個人電腦等級伺服器,來執行雲端運算的程式,所以不需要處理異質性的問題,可以簡化平行運算的系統架構,更容易協調伺服器間的資訊傳遞,讓分散式處理的整體效能更好。許多Google的產品或服務,例如Google搜尋、Gmail、Google Maps、Google Docs等,都使用到雲端運算的技術,藉由大量低價伺服器的運算資源,來滿足大量使用者的需求。


雲端名詞解釋

●雲端運算(Cloud Computing):Google提出的分散式運算技術,讓開發人員很容易開發出全球性的應用服務,雲端運算技術可以自動管理大量標準化(非異質性)電腦間的溝通、任務分配和分散式儲存等。

●網格運算(Grid Computing):在網路上,透過標準化協定與信任機制,整合跨網域中的異質伺服器,建立運算叢集系統來共享運算資源、儲存資源等。

●服務在雲端(In-the-Cloud)或雲端服務(Cloud Service):供應商透過網際網路提供服務,使用者只需透過瀏覽器就能使用,不需了解供應商的伺服器如何運作。

●MapReduce模式:Google運用在雲端運算中的關鍵技術,讓開發者開發大量資料的處理程式。先透過Map程式將資料切割成不相關的區塊,分配給大量電腦處理,再透過Reduce程式將結果彙整,輸出開發者需要的結果。

●Hadoop:使用Java開發的開源雲端運算框架,也是採用Google雲端運算技術實作的框架,但所用的分散式檔案系統與Google不同。2006年Yahoo成為該計畫最主要的貢獻者和使用者。

各方跟進Google推廣雲端服務,但定義不同

Google全球副總裁李開復認為,如同將錢存到銀行保管一樣,也可以信賴資料專家,將資料交給Google保管。不論企業規模大小,都可以用Google雲端運算平臺,建立全球性的服務。

從去年中開始,Google更進一步大力推廣雲端運算,Google全球副總裁李開復說:「雲端運算是Google最重要的關鍵技術,也是網路應用的未來趨勢。」他認為,除了使用者可以使用Google雲端運算的服務以外,不論企業規模大小,也可以運用Google的服務來滿足企業內部的資訊應用需求,或者利用Google提供的平臺,例如Google App Engine,將自己開發的應用程式,藉由Google提供的雲端運算環境,來服務全世界的使用者。

Google本身網路服務的成功案例,以及它對雲端運算的推廣,陸續地吸引了其他業者如Yahoo、IBM、微軟、HP等,也紛紛表示自己擁有雲端運算的產品和技術,或者未來將提供採用雲端運算的服務。

不過,不同業者對於雲端運算的定義又各有不同。只有廣義上對於「雲模式」(Cloud Model)的概念是相通的。不論服務的類型,或者是執行服務的資訊架構,凡是透過網際網路提供應用服務,讓使用者透過瀏覽器就能使用,不需要了解伺服器在哪裡,內部如何運作,都被稱為雲端運算的服務,背後的技術也概稱為雲端運算。循此廣義地定義,另有業者也將這類應用稱為雲端服務(Cloud service)或在雲層裏的服務(in-the-cloud)。

Amazon利用虛擬化技術提供雲端運算服務
Amazon提供的EC2(Elastic Compute Cloud)和S3(Simple Storage Service)服務,與Google雲端服務的實作方式不同。

EC2採用Xen虛擬化技術,提供一個虛擬的執行環境(虛擬實例Instance,或稱為虛擬機器),讓租用Instance的企業來執行自己的應用程式。Amazon提供不同規格的Instance,例如一個超大型的Instance組合,就包括15 GB 記憶體、8 個EC2運算單位(類似4個雙核心虛擬處理器)、1690 GB儲存空間、64位元平臺。

企業只需要將自己的作業系統、網站伺服器和應用程式打包成一個Image檔案,上傳到EC2的伺服器後,呼叫EC2提供的指令來執行Image檔即可啟動服務,就像是擁有一臺實體伺服器一樣,企業可以自行控制在Instance中執行的作業系統。

EC2是提供Image檔案執行的環境,但結束後無法保留資料,所以,Amazon另外提供了一個分散式檔案系統S3,供企業保存EC2運算的輸出結果。另外Amazon還提供了很多現成的Image範例,將常用的作業系統、網站伺服器、資料庫系統都先打包成一套執行環境範本,企業可以將這些Image檔放到租用的Instance中執行,再把自己的網頁應用程式上傳到自己的Instance中,即可提供服務,不需要自己花時間進行各種系統的安裝與設定。

另外Amazon還能讓企業在執行應用程式的過程中,動態調整租用Instance的運算規格,例如原來租用的Instance運算速度滿載,或頻寬不夠時,還能動態擴增可使用的運算資源,或者增加新的Instance來分擔流量。

各業者提供的雲端運算,背後架構各有不同
Amazon透過Xen虛擬化技術,讓企業不需處理實體伺服器的維運,而能執行自己的服務,從廣義上來說,也是一種隱藏運算複雜性的雲端服務。這與Google所使用的雲端運算,在實作技術上完全不同。
實際上,其他業者例如微軟,Yahoo也是自行開發雲端運算平臺,各家採用的理論和實作架構不盡然相同。

不過,Google並非直到去年才開始對外發表這些雲端運算的技術,其實,早在2004年,參與Google基礎架構建置的資深工程師Jeffrey Dean,和同僚在OSDI(Operating Systems Design and Implementation)研討會中,發表了Google雲端運算的核心技術模式MapReduce,以及Google使用這些技術的成果。Jeffrey Dean在報告中指出雲端運算受到平行運算的List語言和函數編程(functional lauguage)的啟發,將原本的Map和Reduce兩種編程概念結合成MapReduce這個新模式,Google發現MapReduce運算模式,很適合用來處理大量資料的分散式運算。

開源社群用Google經驗發展出Hadoop框架
Google發表MapReduce後,2004年開源社群也用Java實作出一套使用MapReduce技術的框架Hadoop,讓Java開發者可以很容易寫出雲端運算的應用。隨著Hadoop框架的開發者Doug Cutting在2006年加入Yahoo,Yahoo遂成為Hadoop最主要的貢獻者和使用者,許多Yahoo提供的服務,例如網頁搜尋,已經是利用Hadoop框架所開發的雲端運算。

目前Hadoop是唯一一套開源的雲端運算框架,雖然與Google使用的雲端運算技術略有不同,但是核心的設計概念都是來自Google的MapReduce模式和分散式檔案架構,Google也有不少工程師參與Hadoop計畫的發展,例如發起Google雲端運算學術計畫的工程師Christophe Bisciglia,也參與了Hadoop的開發。


Google自行設計便宜硬體來處理大量資料

依據Jeffrey Dean今年在ACM通訊第51期發表的數據,目前Google所擁有的雲端運算環境,每天要執行超過10萬個MapReduce任務,每天處理的資料量超過20 PB。所使用的系統架構概略可以分成三個部分:包括MapReduce模式、BigTable資料庫系統、以及最底層的GFS檔案系統。Google為了節省處理大量資料的成本,自行開發出個人電腦等級的標準伺服器,包括Linux作業系統、雙核心x86處理器、4~8GB記憶體、IDE硬碟和GbE等級網路卡,例如有一款伺服器規格是2顆Xeon 2GHz處理器,搭配4GB記憶體及2臺160GB的 IDE硬碟。




Google雲端運算架構

MapReduce
模式

Big Table
資訊庫模式

GFS(Google File System)檔案系統

資料來源:Google,iThome整理,2008年6月

Yahoo用Hadoop處理4 PB的網頁

參與過Hadoop框架開發的Yahoo架構工程師Vivek Ratan指出,Hadoop架構的水平擴充特性,讓企業直接增加機器就能提高運算能力,不需要修改程式碼,也不用擔心機器故障會中斷服務。

Yahoo架構工程師Vivek Ratan也是Hadoop框架的開發者之一,他表示:「目前使用Hadoop框架的雲端運算,任務規模最大的是Yahoo用來建立網頁索引資料庫的運算,同時使用1萬個Linux平臺的處理器核心,處理1兆個網頁連結,從4PB的資料,運算得出300TB的索引數據。」他進一步補充:「以相用的機器設備,改用Hadoop來處理相同任務,比起原本利用叢集運算的方式,節省了1/3的時間。」

雲端運算用來處理大量資料的優勢,也吸引了許多企業投入。例如IBM去年宣布和Google合作,在大陸進行藍雲計畫(Blue Cloud),使用Hadoop框架,來處理科學計算或提供雲端運算的服務。

和傳統超級電腦或大型主機的架構相比,Vivek Ratan認為雲端運算的系統架構是完全不同的設計典範,傳統大型主機是垂直式擴充(Vertical Scaling)的設計架構,而像Hadoop或Google的雲端運算,則是採取水平式擴充(Horizontal scaling)的設計架構。

垂直式的擴充,是指不斷提高單一臺伺服器的運算能力,例如,盡力讓單一臺伺服器配備更多的運算核心,來提升應用程式可以處理的資料量;而水平式擴充則是,不斷增加伺服器的數量,就能提高應用程式可以處理的資料量,而不需要提高單一臺伺服器的運算能力。所以,以採取水平式擴充設計的Hadoop來說,隨著使用應用程式服務的使用者越來越多,要處理的資料量越來越大,就只需要不斷增加新伺服器即可,而不需要修改原來的應用程式碼。

Vivek進一步指出水平式擴充的兩個優點,他說:「因為可以藉由大量擴充伺服器來提高運算能力,所以不需要使用很貴的伺服器,一般PC等級的電腦就足夠。」買一臺大型主機需要上千萬元,但是企業用相同的費用可買到數百臺個人電腦,透過Hadoop整合,就能提供超過單一臺大型主機的運算能力,換言之,可以使用更低的成本,得到更高的運算效能。

另一個更大的優點是可以提高系統容錯能力。雖然單一臺大型主機的運算能力很高,但就像是將所有雞蛋都放在同一個籃子中,一旦當機,主機所執行的應用程式就會完全停擺,無法提供服務,即使有備援系統,也需要一段時間來轉換服務。在Hadoop的架構下,則是透過一臺Master主機將程式切割成很多部分,分配到很多臺電腦中執行,即使有幾臺電腦當機,Master主機也能馬上將需要運算的部分交給閒置的電腦執行,整體的應用程式服務不會中斷。

Vivek表示,在單一任務的運算中,甚至是即便有十分之一的電腦當機,運算仍舊可以繼續執行,他說:「雖然效能會變慢,但是不會中斷。」網管人員只需要將作業環境的備份檔,回復到新的機器中,就可以很快再加入Hadoop的運算環境中提供服務。

降低成本只是短期效益,速度會促成創新應用
運算成本的降低是雲端運算最明顯的效益,Google臺灣工程研究所簡立峰表示:「大型企業逐漸感受到單臺伺服器、儲存和維護等成本增加的壓力,以及管理人力增加的問題,目前臺灣有興趣的企業,多半先看到雲端運算降低成本和人力的好處。」他接著說:「再堅持一段時間,這些企業就會看到雲端運算的速度價值。」

簡立峰認為過去很多企業所提供的網路應用,往往受到技術上的限制,顧慮到企業使用的運算環境無法勝任大量資料處理及大量使用者連線,因此能提供的可行服務有限。但是,透過雲端運算,可以用較低的成本來處理大量資料,提供使用者幾乎是即時的資訊服務。簡立峰說:「速度是產生應用的關鍵,隨著資料量越大,就越能感受到速度的差異。」

趨勢科技正是善用雲端服務的速度,來提供新的網路安全服務。趨勢大約從4年前開始使用平行運算技術,來提供企業用戶過濾網頁內容的服務。隨著網頁內容檢查的需求越來越高,企業或一般使用者希望趨勢科技的安全防護,可以過濾像是釣魚網站或惡意連結的網頁內容,確保用戶上網時的安全。

但是病毒演化速度越來越快,網頁惡意程式的手法日趨複雜,趨勢科技發現需要龐大的運算能力,才足以分析每天47億筆的網頁內容,而且病毒碼更新速度也必須隨時更新,才能讓使用者的防護沒有空窗期。

趨勢科技研究開發部專案經理楊覲寧說:「當外面環境快速改變時,使用者希望安全廠商還是能夠提供保障,因而產品更新的速度就很重要。」

再加上,趨勢的研究團隊分散在臺灣、美國與日本等地,每天需要分析的資料量高達Terabytes的等級,若要跨國搬移資料,所需連線成本非常高,速度也很慢,連帶也會影響了產品更新的速度。

楊覲寧指出,趨勢利用開源的雲端技術與網格技術,將服務放到雲端(in-the-cloud),不但可以讓服務的反應速度很快、開發解決方案的速度很快,還能解決大量資料要跨地域運算的問題。她說:「過去要跑一天的分析任務,現在幾秒鐘就可以得到結果。如果使用者得等一天才能獲得安全防護,根本就來不及。對資安廠商來說,雲端服務是非做不可。」

趨勢科技很早就體會到雲端運算的威力,當相關技術都還在發展的過程,就已經開始投入。隨著Google和Yahoo今年都相繼來臺推廣雲端運算,同時也與臺灣不少大學合作培訓雲端運算的開發人力。簡立峰認為臺灣企業運用雲端運算的時機漸漸成熟,進入門檻將會越來越低,他說:「未來的應用都會跟雲端運算有關,對想要創新的企業來說,可以開始思考這個技術的可能性。」


Yahoo用開源的雲端運算技術Hadoop來提供服務

Yahoo於2前年開始參與開源的雲端運算框架Hadoop,並將其使用在內部服務中。今年2月Yahoo發表了目前最大的Hadoop應用,在2千臺伺服器上面,執行超過1萬個Hadoop虛擬機器,來處理超過5 Petabytes的網頁內容,分析大約1兆個網路連結,建立整個網際網路的網頁索引資料,壓縮過的索引資料庫大小,超過300 TB。目前Yahoo已經在日常提供的搜尋服務中,使用Hadoop技術。




Yahoo雲端運算架構(Hadoop)

Hadoop
MapReduce
模式

HBase
資訊庫模式

GFS(Google File System)檔案系統

資料來源:Yahoo,iThome整理,2008年6月

趨勢用雲端技術解決大量資料的全球移動難題

趨勢科技4年前就開始利用平行運算的網格技術,來提供雲端服務(in-the-cloud服務),用來解決網頁過濾服務中同時上線使用者數不足的問題。後來,趨勢科技從網頁內容過濾,進一步發展出檢查釣魚網站、惡意程式的網站信譽評等服務(Web Reputation Services)。

趨勢科技的網站信譽評等服務,不僅檢查網頁,還需對每一個網頁中的每一個檔案內容,進行關連分析,才足以確保使用者的瀏覽安全,所需要處理的複雜性高於網頁索引。


趨勢科技研究開發部專案經理楊覲寧

目前趨勢科技總共監控近1630億個活躍網站的內容,每天需重新檢查可疑網站,一天要處理近47億個網頁資料,資料量達TB等級。趨勢科技研究開發部專案經理楊覲寧說:「相同的分析工作,過去需要一天的運算時間,改用雲端技術後,現在只需要幾秒鐘。」

除此之外,雲端運算技術還解決了趨勢科技的病毒資料庫跨國移動的難題。因為趨勢科技的研究人員分散在臺灣和美國等地,為了分析病毒特徵,必須將臺灣蒐集的資料傳輸到美國,讓研究人員處理。若直接將TB等級的資料,傳到美國執行分析,結束後再傳回來,需要的網路傳輸費用很高。

使用雲端運平臺後,不論美國或臺灣的研究人員,都可以透過同一套運算平臺,共享病毒分析的資料,楊覲寧說:「不只是縮短資料傳輸時間,也加快了趨勢開發新產品的速度。」


適合雲端運算的應用

離線批次任務

● 大型資料集(PB等級)、整批讀寫(MB級資料區塊)

●可接受暫時中斷的應用

●例如文件內容索引、網頁索引、Log分析、衛星照片分析等

線上應用

●小型資料集(TB等級)、少量讀寫(KB級資料區塊)

●中斷需要立即出現的服務、需要低度延遲的服務

●例如網站搜尋、Gmail、Google Docs等

其他應用

●資訊檢索、自然語言處理、機器學習、影音處理、自動翻譯

資料來源:Google,iThome整理,2008年6月

雲端技術降低SaaS門檻,小公司也能做全世界的生意

不論是Amazon去年推出的EC2和S3服務,或是Google 新推出的Google App Engine,都可以讓企業租用運算資源或儲存空間,來執行企業自己開發的應用程式。

工研院資訊與通訊研究所副所長余孝先認為:「這是新的機會!Google或Amazon所提供的雲端應用平臺服務,大幅降低了雲端運算的使用門檻。」他進一步解釋,即使企業沒有足夠的能力或財力,自行建立自己的機房與網路架構,都能夠利用Amazon或Google的資訊架構,來提供全球性的SaaS(Software-as-a-Service)服務。

余孝先說:「就好像很多小型的IT設計業者,幾個工程師設計出來的IC產品,可以透過臺積電的代工廠,將產品賣到全世界。臺積電平臺作為支點,帶動了臺灣的IC設計產業發展。」他認為新的雲端服務平臺也將有同樣的效果。


工研院資通所副所長余孝先認為,現在只要有好的服務點子,即使沒有財力物力自建機房,也能租用Amazon的雲端資源,提供全球服務。

「只要幾個人一起開發,就可以用Google的平臺來服務全世界。」余孝先說。他以工研院資通所的經驗為例,資通所也開始租用Amazon的EC2與S3服務,來彙整網友分享的臺北市街景照片,預計作為2010年台北國際花卉博覽會的導覽資源。余孝先表示,目前資通所只投入幾個人力,來規畫想法和開發程式,完全不需要建置設備。這個服務透過Google Maps的API與Amazon的雲端服務,很快就可以開始蒐集臺北街景照片。

這也是臺灣業界的新機會,余孝先認為像Web 2.0這類的網路服務馬上可以獲益,打破因為地理區域造成的網路頻寬限制。對企業而言,也可以考慮加快將MIS業務委外,他說:「企業不需要再自行建置機房,使用雲端運算的服務,既可以提升品質,又能降低成本。」

當網路上的SaaS服務越來越多,越來越多人將資料放在網路之後,進一步會帶動的技術,余孝先認為,就是寬頻無線網路的技術,他說:「WiFi、WiMAX的重要性會更明顯,不論工作或娛樂都需要連到雲的那一端,所以使用者隨時都會想要享有快速的網路頻寬。」

接下來,企業或開發者將會面臨的唯一限制,就是新的開發思維。「雲端運算創造了新的開發典範,開發人員要面臨的新挑戰是,沒有處理器限制、沒有網路頻寬限制、沒有資料量限制以後,我們可以有什麼樣的應用?」Google臺灣工程研究所所長簡立峰表示。雲端運算核心技術MapReduce

雲端運算的關鍵技術是MapReduce,最早是由Google提出,後來也運用在開源的雲端技術Hadoop中。Google臺灣工程研究所所長簡立峰說:「這是一種解決問題的程式開發模型。」

和傳統開發模式相比,簡立峰表示:「使用MapReduce模式,開發人員在拆解問題的過程中,就要先對問題進行平行化處理。」開發人員需要先分析問題的解決流程,找出可以利用平行運算來處理資料的部分,也就是那些能夠被切成小段分開來處理的資料,再針對可以採用平行處理的部分寫成Map程式。

有了Map程式之後,就可以使用大量機器用執行Map程式,分別同步處理分析每一段資料,再將每一個Map程式分析出來的結果,透過Reduce程式進行合併,最後則彙整出完整的結果。

MapReduce的運作方式很像選舉開票,Yahoo亞洲區科技研發工程部總監許明彥說:「只要大家都遵守固定的開票程序,那由誰來開票其實都沒有影響。所以,中選會可以將開票任務分配給各地投票所,各自負責所屬的票箱,最後再向中選會回報各開票所的開票結果,中選會再統一彙整,就能算出全國的開票結果,這樣就不需要把幾百萬張選票都運回中選會處理。」各投票所的開票任務就像是Map程式,負責處理少量資料,而Reduce程式就是中選會彙整投票結果的動作。

開發者將問題拆解成MapReduce的程式後,就可以交由雲端運算的平臺來執行,例如Hadoop。Hadoop框架中的Master機器會將開發者的MapReduce程式分配給有空閒的伺服器,一群伺服器先執行Map程式來處理切割過的小塊資料。再將分析後的結果,送到執行Reduce程式的機器中混合、排序與彙整。最後再把彙整後的結果輸出給開發者。

不過,國家高速網路與計算中心助理研究員王耀聰認為MapReduce不一定能有效處理各種問題,他舉例,像目前的生物研究資訊都是採用XML格式,要轉換成Key-Value資料庫架構的設計方式,程式開發並不容易。

趨勢科技研究開發部專案經理楊覲寧則認為:「MapReduce使用Script語法,除錯不易,而且不見得所有工作都要用MapReduce來處理。」她解釋,像資料加解密,用CGI程式來處理反而比較快,只要先將CGI程式安裝到所有雲端運算的機器上,還是可以透過Master機器來分配任務。


Google工程師今年開始到臺灣的大學中擔任助教,培養雲端運算的開發人力。(由左至右為Google工程師談偉航、謝毓庭和廖碩鵬)攝影/楊易達

不過,Google軟體工程師談偉航解釋:「理論上透過多階段的MapReduce,可以組合出各種解決問題的路徑。但關鍵還是對問題本身的了解,如果開發者越清楚,就越能知道拆解出問題的路線。」簡立峰認為,臺灣資工系大學部二年級的訓練課程就足以學習雲端運算技術。

目前臺灣Google固定和大學合作,派工程師擔任課堂助教,教導學生學習雲端運算的技術,簡立峰希望每年都能輪流到不同大學與教授合作開課,他說:「只要培養1年,就可以有上千人學會雲端運算技術,學生進入就業市場後,臺灣企業也就學到了。」


雲端運算關鍵技術MapReduce的執行示意圖

MapReduce是雲端運算的關鍵技術,將要執行的問題,拆解成Map和Reduce的方式來執行,以達到分散運算的效果。例如要搜尋哪些網頁中有「iThome」這個字,可以先用Map程式,來計算出所有網頁中,每一個字的位置。再使用Reduce程式,在每一個字的清單中,篩選出「iThome」這個字,所對應的網頁網址。

不論Google或Yahoo所採用的MapReduce執行概念相同,只是儲存的檔案系統不同(Google是GFS,而Yahoo是HDFS)。MapReduce程式的執行過程如下:

1 將要執行的MapReduce程式複製到Master與每一臺Worker機器中。

2 Master決定Map程式與Reduce程式,分別由哪些Worker機器執行。

3 將所有的資料區塊,分配到執行Map程式的Worker機器中進行Map。

4 將Map後的結果存入Worker機器的本地磁碟。

5 執行Reduce程式的Worker機器,遠端讀取每一份Map結果,進行彙整與排序,同時執行Reduce程式。

6 將使用者需要的運算結果輸出。

資料來源:Google,Yahoo,iThome整理,2008年,6月

熱門新聞

Advertisement