2011-04-09 101 views
1

我現在擁有12個節點的集羣。它們中的一些,特別是8個節點具有足夠的磁盤空間。但其他4只有很少的空間可供使用。帶有一些節點磁盤空間不足的Hadoop集羣〜

但是,其他4個節點仍然具有較高的RAM和CPU配置。所以我的意圖是利用這些資源。但是現在,當我運行算法SlopeOne時,地圖將輸出如此多的中間數據並將它們存儲在磁盤上。因此,我在這個描述下貼了一些錯誤。

我在想:

  1. 如果某個節點發現它不能在本地存儲數據,它會嘗試將數據存儲到具有足夠磁盤空間的其他節點?
  2. 如果單個節點無法在本地存儲數據,它是否會再次開始工作?
  3. 如果某些具有足夠磁盤空間的節點先完成一個映射作業,它是否會繼續運行分配給低磁盤空間的作業?
  4. 我知道我可以設置一個參數,它可以限制本地空間的使用,如果一個節點超過了這個限制,jobtracker將不會給該節點提供更多的作業。但是這種方法是否會讓節點停留在那裏而不工作?
  5. 任何建議,我可以利用資源,並保持錯誤?

欣賞任何想法。

java.io.IOException: Spill failed 
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.collect(MapTask.java:860) 
    at org.apache.hadoop.mapred.MapTask$OldOutputCollector.collect(MapTask.java:466) 
    at slopeone.SlopeOneTrainer$SlopeOneTrainMapper.map(SlopeOneTrainer.java:71) 
    at slopeone.SlopeOneTrainer$SlopeOneTrainMapper.map(SlopeOneTrainer.java:1) 
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50) 
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358) 
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307) 
    at org.apache.hadoop.mapred.Child.main(Child.java:170) 
Caused by: org.apache.hadoop.util.DiskChecker$DiskErrorException: Could not find any valid local directory for taskTracker/jobcache/job_201104070658_0006/attempt_201104070658_0006_m_000000_0/output/spill897.out 
    at org.apache.hadoop.fs.LocalDirAllocator$AllocatorPerContext.getLocalPathForWrite(LocalDirAllocator.java:343) 
    at org.apache.hadoop.fs.LocalDirAllocator.getLocalPathForWrite(LocalDirAllocator.java:124) 
    at org.apache.hadoop.mapred.MapOutputFile.getSpillFileForWrite(MapOutputFile.java:107) 
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.sortAndSpill(MapTask.java:1221) 
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.access$1800(MapTask.java:686) 
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer$SpillThread.run(MapTask.java:1173) 
+0

我有一個類似的問題(我認爲) - 我們發現,當我們擁有異構磁盤配置的機器,HDFS似乎以與其他磁盤相同的速度填充存儲空間較少的機器。看來HDFS應該有一些能力來反映磁盤使用情況並進行調整。再平衡的作品,但它只是暫時的。 – 2016-01-24 18:49:07

回答

0

你可以嘗試減少重複的數量,在這個問題回答HDFS Reduced Replication Factor 默認複製因子爲3

+0

我不明白這是如何回答這個問題的。可以肯定的是,降低複製因子將減少整個磁盤的消耗,但OP的整體問題仍然存在。我誤解了這是如何解決問題的? – 2016-01-24 18:51:59