В Hadoop где фреймворк сохраняет вывод задачи Map в обычном Map-Reduce приложении?

Я пытаюсь выяснить, где выход задачи Map сохраняется на диск, прежде чем он может быть использован задачей Reduce.

Примечание: - используется версия Hadoop 0.20.204 с новым API

Например, при перезаписи метода map в классе Map:

public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
    String line = value.toString();
    StringTokenizer tokenizer = new StringTokenizer(line);
    while (tokenizer.hasMoreTokens()) {
        word.set(tokenizer.nextToken());
        context.write(word, one);
    }

    // code that starts a new Job.

}

Мне интересно узнать, куда в итоге context.write() записывает данные. Пока что я столкнулся со следующим:

FileOutputFormat.getWorkOutputPath(context);

Что дает мне следующее местоположение на hdfs:

hdfs://localhost:9000/tmp/outputs/1/_temporary/_attempt_201112221334_0001_m_000000_0

Когда я пытаюсь использовать его в качестве входных данных для другого задания, это дает мне следующую ошибку:

org.apache.hadoop.mapreduce.lib.input.InvalidInputException: Input path does not exist: hdfs://localhost:9000/tmp/outputs/1/_temporary/_attempt_201112221334_0001_m_000000_0

Примечание: задание запускается в Mapper, так что технически, временная папка, куда задание Mapper записывает свои выходные данные, существует, когда начинается новое задание. Но опять же, все еще говорится, что входной путь не существует.

Есть идеи, куда записывается временный вывод? Или, может быть, в каком месте я могу найти вывод задачи Map во время задания, которое имеет и Map, и Reduce стадии?

7
задан Amro 2 July 2012 в 17:01
поделиться