2012-06-27 42 views
2

我運行一個簡單的連接查詢加入在AWS彈性地圖性能降低運行蜂巢

select count(*) from t1 join t2 on t1.sno=t2.sno 

表t1和t2都有各20萬條記錄和列SNO是字符串數據類型。

表格數據以rcfile格式從Amazon s3導入HDFS。 查詢花費了109個包含15個亞馬遜大型實例的查詢,但是它在具有16 GB RAM和16個cpu核心的sql server上花費了42秒。

我錯過了什麼?不明白爲什麼我在亞馬遜上表現緩慢?

+0

答案有幫助嗎? –

+0

謝謝你的回答..沒有機會去測試它。我會盡快回復你的電話號碼。 –

回答

2

的一些問題,以幫助您調整Hadoop的性能:

  • 什麼是您的IO利用率看起來像那些實例?也許大型實例不適合作業的CPU /磁盤/內存的正確平衡。
  • 你的文件如何存儲?它是單個文件還是很多小文件? Hadoop對許多小文件並不那麼熱,即使它們可組合使用
  • 您運行了多少個reducer?你想擁有0.9 * totalReduceCapacity作爲理想的
  • 你的數據有多歪曲?如果有許多記錄具有相同的密鑰,則它們將全部進入同一個縮減器,並且如果不小心,則在該縮減器中將具有O(n * n)上限。

sql-server在40mm記錄中可能沒問題,但要等到你有20n條記錄,看看它是怎麼做的。它可能會破壞。我更喜歡將Hive視爲Map Reduce的巧妙包裝,而不是真正的數據庫的替代方案。

另外根據經驗,我認爲有15 c1.mediums可能會像大型機器一樣好,如果不是更好的話。大型機器並沒有誠實地平衡CPU /內存。