En Hadoop, ¿dónde guarda el marco la salida de la tarea Map en una aplicación Map-Reduce normal?

stoy tratando de averiguar dónde se guarda la salida de una tarea de Mapa en el disco antes de que pueda ser utilizada por una tarea Reducir.

Nota - la versión utilizada es Hadoop 0.20.204 con la nueva API

Por ejemplo, al sobrescribir el método de mapa en la clase 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.

}

Estoy interesado en averiguar dónde context.write () termina escribiendo los datos. Hasta ahora me he encontrado con:

FileOutputFormat.getWorkOutputPath(context);

Which me da la siguiente ubicación en hdfs:

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

Cuando intento usarlo como entrada para otro trabajo, me da el siguiente error:

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

Nota el trabajo se inicia en el asignador, por lo que técnicamente, la carpeta temporal donde está escribiendo la tarea del asignador existe cuando el nuevo trabajo comienza. Por otra parte, todavía dice que la ruta de entrada no existe.

¿Alguna idea de dónde se escribe la salida temporal? ¿O tal vez cuál es la ubicación donde puedo encontrar el resultado de una tarea de Mapa durante un trabajo que tiene una etapa de Mapa y una de Reducción?

Respuestas a la pregunta(6)

Su respuesta a la pregunta