2012年6月22日 星期五

到底功夫熊貓(Xen)踢不踢的動大象(Hadoop)呢



到底功夫熊貓(Xen)踢不踢的動大象(Hadoop)呢? 

這幾天我在Facebook - Taiwan Hadoop User Group 拋磚引玉貼了 "要使用大象,真的得養頭大象嗎?為何不使用AWS EMR"的文章,意外引起熱烈的討論,把許多潛水的高手和同好都吸了出來~XD (你自己不是也都在潛水),因為大家都有遇到虛擬化效能的問題。

一般來說,要養Hadoop (或是大型分散式系統),如果不是用實體機器來養 (除非你像google一樣有錢,不然一定養不多,也養不起),不然通常就是用虛擬化的技術來玩。
如果只是玩玩和測試安裝與練習寫寫程式,那可能還沒什麼大礙,但是一到要玩到真實案例,甚至要上Production 就會遇到許多效能瓶頸的問題需要去解決。像在 Taiwan Hadoop User Group 的討論串裡, James 大大就有提到:如果同樣都是 100TB 的 terasort 好了, 如果把一個實體的hadoop cluster搬到AWS,要多多少個 node 才能有相同的效能 ?
老實說,目前我們也還沒有玩到這麼大的資料量,所以還真的沒對於這麼大量的資料做過benckmark,希望將來我們系統長到那麼大,有機會分享這些數據給大家知道~XD

回到效能問題,第一步可能要先引自Jazz大的名言:學控制的人都會知道『先能量測,才有辦法控制』,Jazz大建議安裝 Ganglia 跟 Munin來觀察,我們是裝OpenNms,總之要先確認Performace是出在哪裡:
  • Host Dom0?
  • CPU ?
  • Memory ?
  • Disk I/O ?
  • Network I/O ?
 第二步,就是要確認你的虛擬化環境與設備:
  • 你Server 的等級
  • 你目前是使用哪一版的Xen?( 3.x、4.x)
  • 你是使用PV  還是HVM?
  • 你是使用怎樣的deivce當domU's disk?( file: ? tap:aio:? phy:?)
因為公司內部和專案開發都是使用Xen,所以之前倒是有為了效能問題去找了一堆資料,整理如下:
  1. VM 盡量不要使用 SWAP (不過這還有爭議)
  2. RAID10 array is recommended
  3. 使用PV (半虛擬化)效能較好,或使用Xen PVHVM drivers for Linux HVM guests
  4. 盡量直接使用 block device (without file system).
  5. 如果還是要用File System 請參考這篇 Filesystem performance on Xen
 不過好像也沒啥特別的,大家應該都知道了,如果有其他作法,歡迎大家留言討論~:P

張貼留言