2011-10-21 34 views
2

對於客戶端,我已經從範圍界定上運行AWS EC2一個Cloudera的味道Hadoop集羣的短期可行性。在大多數情況下,預期結果是邏輯卷的性能大部分不可靠,這就是說,盡我所能讓羣集在相應情況下運行得相當好。IDEA的平衡了HDFS - > HBase的地圖減少工作

昨晚我跑了他們的進口商腳本的完整測試,可以從指定HDFS路徑提取數據,並將其推入HBase的。他們的數據有點不尋常,因爲記錄少於1KB,並且已經凝聚成9MB的壓縮塊。所有總共有大約500K條文本記錄從gzip中提取出來,進行完整性檢查,然後進入reducer階段。

作業運行在環境預期之內(我預計溢出記錄的數量),但一個非常奇怪的問題是,當作業運行時,它運行8個reducer,但2個reducer執行99%的工作,同時剩下的6人做了一小部分工作。

我迄今爲止未經測試的假設是,我在作業配置中缺少一個關鍵的洗牌或塊大小設置,導致大部分數據被推入只能由2個reducer消耗的塊中。不幸的是,上次我使用Hadoop時,另一個客戶端的數據集在物理託管羣集中的256GB lzo文件中。

爲了澄清,我的問題;有沒有一種方法可以調整M/R作業,以通過降低地圖的輸出大小或使每個縮減器減少將要解析的數據量來實際利用更多可用的縮減器。即使比目前的2減少4個改進將是一個重大改進。

回答

2

好像你在你的減速器獲得的熱點。這可能是因爲一個特定的鍵很受歡迎。作爲映射器輸出的關鍵是什麼?

你有幾個選擇這裏:

  • 嘗試更減速。有時候,你在散列的隨機性中會產生奇怪的文物,所以有一些素數的減速器有時會有所幫助。這可能不會解決它。
  • 編寫一個定製的分區器,更好地分配工作。
  • 找出爲什麼你的一堆數據被分爲兩個鍵。有沒有辦法讓你的鑰匙更獨特的分裂工作?
  • 有什麼你可以用一個組合做,以減少交通要減速機量?
+0

我需要通過客戶端的參考地圖挖/減少應用程序,但我認爲(希望)鍵控問題可能是罪魁禍首。大約需要半個小時來啓動羣集並讓它穩定(namenode safemode等),然後再運行/測試/驗證幾個小時,但是如果事實證明這是真的,我將回到一個答案檢查中。 – David

+0

結束寫一個快速自定義M/R來弄清楚事情。客戶端的導入是使用身份縮減器(來自hbase mapreduce包的股票沒有擴展名),實際上其主鍵只有2個值。否則,記錄中所有其他值的基數都是二進制或等於總記錄集。我知道這是另外一個問題,但是你知道默認的hbase導入類是否可以將不同的密鑰聚合爲減少任務? – David