Кластер Hadoop с несколькими узлами на диске - PullRequest
1 голос
/ 09 апреля 2011

Сейчас я держу кластер с 12 узлами. Некоторые из них, а именно 8 узлов, имеют достаточно места на диске. Но остальные 4 имеют мало места для использования.

Однако остальные 4 узла все еще имеют высокую конфигурацию ОЗУ и ЦП. Поэтому я намерен использовать ресурсы. Но теперь, когда я запустил алгоритм SlopeOne, карта выведет так много промежуточных данных и сохранит их на диске. Таким образом, есть некоторые ошибки, которые я вставил под это описание.

Интересно:

  1. Если узел обнаружит, что он не может хранить данные локально, попытается ли он сохранить данные на других узлах с достаточным пространством на диске?
  2. Если одному узлу не удалось сохранить данные локально, он снова начнет работу?
  3. Если некоторые узлы с достаточным пространством на диске сначала завершают задание карты, продолжит ли он выполнять задания, которые были распределены на места с низким дисковым пространством?
  4. Я знаю, что могу установить параметр, который может ограничить использование локального пространства, и если узел превышает это ограничение, средство отслеживания заданий не даст больше заданий этому узлу. Но будет ли этот метод поддерживать узел без работы?
  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)

1 Ответ

0 голосов
/ 08 мая 2014

Вы можете попытаться уменьшить количество репликаций, как ответили в этом вопросе Сниженный коэффициент репликации HDFS Коэффициент репликации по умолчанию - 3

...