July 2010 Archives

淺談雲端運算新趨勢與 Hadoop 平台之崛起
國家高速網路與計算中心 王耀聰

** 本文亦刊登於網管人雜誌第 53 期 ( 2010 年六月號 )

坐看風雲險中生

  隨著網際網路的普及,各種連網裝置讓我們的生活更加地便利。然而隨著人們產生資訊的速度越來越快,數量愈來愈多,大量通訊不僅塞爆了實體的網路頻寬,無形中也正侵蝕著你我大腦的資訊頻寬。為了解決資訊爆炸所造成的困擾,順應隨時隨地連網的趨勢,替企業達成精簡資訊成本的目標,一種嶄新的軟體服務模式與資訊架構革命正以撲天蓋地之姿席捲全球,Google執行長施密特(Eric Schmidt)於2006年8月9日SES'06會議中首次使用「雲端運算(Cloud Computing)」來形容無所不在的網路服務,緊接著Amazon更以 Elastic Compute Cloud(簡稱EC2)命名其虛擬運算資源服務[1],[2]。2007年10月8日,Google與IBM發佈合作新聞稿,擬於美國境內七所大學教授如何處理海量資料的高速計算技術,從此引爆雲端運算的討論熱潮[3]。2008年時值全球金融風暴肆虐,多數人均擔心雲端運算只是一時的口號。2009年4月24日,美國國家標準局(NIST)起草雲端運算的標準定義[4];於同年5月,歐巴馬政府更明白地在2010年度國會預算書上,指出雲端運算是重要施政重點[5]。隨即,英國、日本、韓國等亦相繼宣佈將建立政府雲端的計畫,作為振興經濟的強心針。2010年被媒體喻為台灣的雲端元年,但每當談到雲端運算,不知大家是否心中仍存著諸多疑惑,冷眼看那不同廠商各說各話。底下就讓我們細說從頭,先給大家一個關於雲端運算的正式定義、看看雲端的技術演進史,最後說明為何Hadoop這個處理海量資料的軟體平台會逐漸被國際資訊大廠所重視。

笑談雲端五四三

  漫畫裡的呆伯特對老闆突然丟來的奇怪問題,總能用簡單的一句話敷衍過關。那麼如果要您用一句話簡單說明什麼是雲端運算,那該如何解釋呢?且讓小弟不聰贈送各位正經版與幽默版各一句來當作應對妙招,正經版可答道「雲端運算就是隨時隨地運用各種裝置來存取想要的服務」,幽默版可笑曰「雲端運算談的不外乎五四三(台語)啦~」倘若有人反譏您胡說八道,還有雲端口訣可以背得對方聽:「一個基本精神、兩個極端產業、三個服務模式、四個佈署模型、五個基礎特徵」,這不恰恰就是五四三二一嘛?!關於這雲端口訣的五四三可不是隨便說說,真是取自美國國家標準局(NIST)的雲端標準定義呢[6]!以下為各位看倌逐一說個明白。

  所謂「五個基礎特徵」,包括:(1)隨需自助服務(On-demand self-service)、(2)隨時隨地用任何網路裝置存取(Broad network access)、(3)多人共享資源池(Resource pooling)、(4)快速重新佈署靈活度(Rapid elasticity),和(5)被監控與量測的服務(Measured Service)。這五個基礎特徵的典型代表當然是Amazon Web Service。專家們認為未來進入雲端運算的時代,每個系統管理員將不再需要擔憂採購硬體的時間與流程,而是改以租賃方式,動態地根據需求,自助啟動或關閉所負責的資訊服務,而這些服務都是透過各種網路裝置來存取。此外,由於全球不同企業共享這些軟硬體甚至人力資源,從統計與機率上,若產業異質性高,便能有效地互補彼此尖峰使用的時間,間接降低了不同企業的資訊成本。當然為了達成動態調配共享資源的目的,雲端服務供應商必須具備快速重新佈署的靈活度,好讓各種被釋放出來的資源能馬上被其他客戶使用。最後,任何雲端服務都涉及計價行為,因此所有服務必須能被監控與量測,好統計租賃的帳單金額。

  至於「四個佈署模型」,指的是(1)公用雲端(Public Cloud)、(2)私有雲端(Private Cloud),及不常聽到的(3)社群雲端(Community Cloud)、(4)混合雲端(Hybrid Cloud)。公用雲端顧名思義就是全球一起共用某個雲端服務廠商的資源池,多半適用於資料機敏性低的新創事業或中小企業;而私有雲端則是由企業自行建置共享資源池,故任何資料機敏性高的產業都可能需要自行打造。社群雲端係指由多個組織共享資源池,故較合適具共享研究資料需求的學研單位合資建置;而混合雲端泛指混合了上述三種雲端型態,須基於標準或運用新技術來確保資料與應用程式在不同平台間的移植性。

  關於「三個服務模式」,也可稱之為不同雲端服務商的市場區隔,分別為:(1)架構即服務(Infrastructure as a Service,IaaS)、(2)平台即服務(Platform as a Service,PaaS)與(3)軟體即服務(Software as a Service,SaaS)。Amazon EC2的服務就是典型的架構即服務,讓用戶可自行租賃所需的運算、儲存與網路資源。而Google App Engine則是典型的平台即服務,讓用戶可以在共通的平台上進行程式開發或軟體佈署。大家常用的Yahoo、Gmail、Facebook等都算是軟體即服務的範疇,過去購買套裝軟體的模式,如今已逐漸典範轉移,改依需求變化,動態地變更租賃軟體服務的授權數量,用多少付多少。從企業經營成本面來看,過去採購硬體的固定成本,如今轉變成變動營運成本,在金流調度上將更有彈性。

  口訣最後的「兩個極端產業,一個基本精神」,談的是未來雲端將持續往兩個極端發展,一邊是雲(資料中心)的產業供應鏈,一邊是端(行動裝置)的產業供應鏈。雲的發展將是地理集中而標準化,而端的發展將是位置變異而多元化。而雲端運算之所以能融入各行各業,憑藉的是「形成網路服務」這個基本精神。惟有形成服務,才有商業行為,方能串起供需鏈,進而促進經濟的永續發展。

回顧資通六十載

  談完雲端的五四三,相信各位已對雲端運算有比較清晰的概念。那麼雲端運算代表的是全新技術嗎?其實不然,雲端運算只是軟體演化必然的趨勢。讓我們一同回顧資通產業過去六十年的發展:1960年代運算主力是超級電腦,1970年代才有個人電腦誕生,1980年代制訂TCP/IP通訊協定,1990年初期因為有GNU自由軟體基金會與Linus的貢獻,才產生第一次高速運算革命,讓個人電腦叢集(PC Cluster)以企鵝雄兵打敗超級電腦,大幅降低運算成本,平行運算(Parallel  Computing)頓時蔚為顯學。1990年代後期網路逐漸導入金融機構,分散式物件技術才逐漸流行。演化至2000年初,SETI@Home尋找外星人計畫,向全球電腦用戶借螢幕保護的運算資源,開啟分散式運算(Distributed Computing)的新頁。隨即全球高速電腦中心起而效法分散式運算精神,提倡格網運算(Grid Computing),擬能建立虛擬組織共享全球運算資源。格網運算雖立意良善,卻因遲遲無法形成服務而難以進入產業應用。直至2006年Amazon推出 Elastic Compute Cloud(EC2)才成功地建立隨需運算服務,開啟雲端運算的序曲。

  歷經超級電腦、平行運算、分散運算與格網運算,雲端運算繼承了平行運算的叢集技術、融合了分散運算的容錯特性,發展出「資料中心即電腦(Data Center as a Computer)」的新思維[7]。有別於格網運算將資料搬到有空閒計算資源的思維,雲端運算強調把工作丟到資料所在主機去計算。在雲端的年代,資訊人惟有不斷充實多核心、平行、分散式運算與網頁程式設計等技能,才有機會住進未來那朵大雲裡。

喜獲吉象過重山

  看完以上的趨勢分析,或許您不禁想問:「縱使知道雲端趨勢很重要,若想打造私有雲端,下一步該做什麼呢?總是得腳踏實地,而不是空口畫雲吧~」若您想打造私有雲端,可參考如下圖中所列舉不同技術分層的自由軟體,來建置您專屬的雲端服務。目前有專家學者警告企業導入雲端不該只是採購硬體或導入虛擬化。小弟認為這只是導入雲端第一個階段,後續將視各企業屬性不同而導入平台即服務與軟體即服務的相關技術。倘若您的企業需要架構即服務,擬導入虛擬層與控制層,這裡建議的自由軟體包括:Xen、KVM、OpenNebula與Eucalyptus這幾套。若您需要建置的是資料分析的平台服務,那接下來要介紹的Hadoop與美國資料探勘中心研發的Sector/Sphere都是首選。

  本文最後要談的是Hadoop這個海量資料分析的軟體平台,它有何特殊呢?為何Google與IBM合作教授雲端課程採用它?為何Yahoo搜尋引擎、Facebook社交網站、Last.fm網路電台、Joost網路電視等均採用它來進行資料分析呢?首先,倘若說Google是當今最能引導技術風潮的品牌,想必大家不得不同意。那麼Google的關鍵技術是什麼呢?Google有三大關鍵技術:其一是Google File System,為了提升營運容錯率,Google重新設計了一套分散式檔案系統來存放全球的網頁內容、電子郵件、照片、影片等;其二是MapReduce演算法,Google宣稱多數的資料分析都可以靠此一演算法解決;其三是BigTable分散式資料庫,Google將存在Google File System中的資料,經過MapReduce運算後,轉換成巨大的資料表,這個資料表有別於傳統關聯式資料庫,僅存放成對的Key-Value。因此,當您下達一個查詢網頁或查詢信件的動作前,Google早已將所有網頁、信件進行拆解分類存進BigTable,查詢下達時只是從BigTable查Key等於關鍵字對應的所有Value罷了。

  然而Google的三大關鍵技術沒有原始碼或軟體可讓其他企業安裝使用,好在Google佛心來著,分別公開了Google File Ssystem、MapReduce與BigTable的三篇論文,讓Hadoop這套軟體平台的創始人Doug Cutting能參考論文,重新實作了Hadoop Distributed File System(HDFS)與MapReduce API。諸多過去無法分析的資料,如今有了Hadoop軟體平台後,都開始可以分析了。例如:電信業者如今可以分析手機在基地台漫遊的特性,提供更好的在地費率。信用卡業者如今可以每天定期分析各種信用貸款所產生的風險,動態調整信貸利率。便利超商如今可以分析消費者的購買習慣,動態調整架上存貨數量。甚至新興產業,如生醫資訊、智慧電網等都可以運用Hadoop平台來進行資料探勘與趨勢預測。若您的企業有儲存海量資料的需求,有分析海量資料的需求,或者面臨資料庫過度龐大,正在尋求分散式資料庫或資料倉儲的技術,那Hadoop或許是一個已通過商業驗證的選擇。只要懂得駕馭Hadoop這隻大象,它將能駝著您爬過一座座資料大山,幫您犁出隱藏在群眾中的邏輯。
 

open_source_for_private_cloud.png
▲ 建構私有雲端運散架構的自由軟體

[1] Did Google's Eric Schmidt Coin "Cloud Computing"?
    - http://cloudcomputing.sys-con.com/node/795054/print
[2] Search Engine Strategies Conference 2006
    - http://www.google.com/press/podium/ses2006.html
[3] Google and I.B.M. Join in 'Cloud Computing' Research
    - http://www.nytimes.com/2007/10/08/technology/08cloud.html
[4] The US Federal Government defines Cloud Computing
    - http://www.elasticvapor.com/2009/05/us-federal-government-defines-cloud.html
[5] President Obama's 2010 Budget Highlights Cloud Computing
    - http://kevinljackson.blogspot.com/2009/05/president-obamas-2010-budget-highlights.html
[6] NIST Definition of Cloud Computing v15
    - http://csrc.nist.gov/groups/SNS/cloud-computing/cloud-def-v15.doc
[7] The Datacenter as a Computer
    - http://www.morganclaypool.com/doi/abs/10.2200/S00193ED1V01Y200905CAC006