Hadoop集群有一些磁盘空间低的节点〜

时间:2011-04-09 05:11:15

标签: hadoop mapreduce hdfs

我现在正在拥有一个包含12个节点的集群。其中一些,特别是8个节点,有足够的磁盘空间。但其他4只有很小的空间可供使用。

但是,其他4个节点仍具有较高的RAM和CPU配置。所以我的意图是利用资源。但是现在,当我运行一个算法SlopeOne时,地图将输出这么多中间数据并将它们存储在磁盘上。因此存在一些错误,我在此描述中粘贴了这些错误。

我想知道:

  1. 如果某个节点发现它无法在本地存储数据,它会尝试将数据存储到具有足够磁盘空间的其他节点吗?
  2. 如果单个节点无法在本地存储数据,它是否会再次启动工作?
  3. 如果某些具有足够磁盘空间的节点首先完成了地图作业,它是否会继续运行分配到低磁盘空间的作业?
  4. 我知道我可以设置一个参数,这可以限制本地空间的使用,如果一个节点超过了这个限制,那么jobtracker将不会为该节点提供更多的作业。但是这种方法会不会让节点停留在那里而不工作?
  5. 我可以利用这些资源并保留错误的任何建议吗?
  6. 欣赏任何想法。

    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)
    

1 个答案:

答案 0 :(得分:0)

您可以尝试减少复制次数,正如此问题HDFS Reduced Replication Factor中所回答的那样 默认复制因子为3