带有一些节点磁盘空间不足的Hadoop集群〜

问题描述:

我现在拥有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

你可以尝试减少重复的数量,在这个问题回答HDFS Reduced Replication Factor 默认复制因子为3

+0

我不明白这是如何回答这个问题的。可以肯定的是,降低复制因子将减少整个磁盘的消耗,但OP的整体问题仍然存在。我误解了这是如何解决问题的? – 2016-01-24 18:51:59