星期一, 6月 14, 2010

雲端運算Cloud Computing學習心得筆記(二) Facebook的雲端架構

傳統的網頁通常是用戶主動在Browser上refresh頁面才會更新資料,一般節省資源的方式為把動態網頁(asp,php,jsp..)轉靜態頁面(html),並利用Trigger的方式更新資料庫資料及網頁資料,但隨著AJAX技術普及化,許多網站加入了即時更新內容的機制,如 Facebook 的 news feed 或status update ,由於每個人本身都是訊息發佈者及訂閱者,因此當用戶的關係越密切,讀寫的資料就越龐大,就Facebook 2009年公布的數據為:


 


資料產生:


超過3億位有效用戶


每天有3000萬個用戶至少會更新一次自己的狀態


每個月有超過10億張的照片上傳


每個月有超過1000萬的影片上傳


每周新增超過10億種的內容(網站連結,新聞,部落格文章,記事本,照片..等)


 


資料用量為:


每天產生4TB的已壓縮資料


每天有135T的已壓縮資料被掃描檢視


每天8萬小時的運算時間


 


由於資料量相當大,如果要購置可以支援的高階超級伺服器將會相當額貴,因此Facebook採用Hadoop架構,用大量的PC去取代高階伺服器,既省錢又因平行運算的架構及高容錯性,對於Peta級資料量其查詢效能相當好,其所規畫出來的儲存的空間為


4800台cores (虛擬server), 5.5 PB (Peta=1015)


每個node配置 12TB空間


 


硬體架構如下:


image


Facebook Datacenter 影片 :



 






由於Facebook 上需要分析用戶資料來做相關的推薦,因此他們還使用了HIVE來當資料庫倉儲系統,其架構如下:


image


Scribe 是蒐集Log 的 server , 將蒐集到的log 往 Hadoop Hive warehouse丟, 即可用近似SQL的語法來做分析,一些推薦的內容如 朋友、社團、專頁、廣告..等應該都是透過這樣的機制產生。


 


由Facebook公開的資料可以得知,經營一個全球化的SNS網站絕不能用一般的思維來設計,看似簡單的網站,若架設在單一Server上給少數使用者用,一樣可以運作,但到了要服務3億人時,網站看似沒變但整個架構就都不一樣了,要如何彈性有效率,可以參考一下Facebook 的架構。


 


資料來源:


Facebook Tech Talk: Rethinking Servers & Datacenters http://www.facebook.com/techtalks?v=wall#!/video/video.php?v=208561675468&ref=mf

Hadoop & its usage in facebook http://www.snia.org/events/storage-developer2009/presentations/keynotes/DhrubaBorthakur-Hadoop_File_System_Architecture_Facebook.pdf


Hadoop and Hive Development at facebook http://www.borthakur.com/ftp/hadoopworld.pdf

沒有留言: