3.2 MapReduce flujo de trabajo
1. Diagrama de flujo:
2. Proceso detallada
El proceso anterior es el proceso más amplia MapReduce todo el flujo de trabajo, pero sólo el principio aleatoria de la etapa 7 al paso 16 extremos, particularmente aleatoria proceso detallada, como sigue:
. 1) MapTask recogió nuestro método kv mapa () de salida, en memoria intermedia
2) de forma continua desde la memoria buffer overflow archivo de disco local, varios archivos pueden desbordarse
3) varios archivos de derrames se fusionarán en un gran archivo de vertido
4) en el proceso de consolidación del proceso de desbordamiento y, deben llamar partición Partitioner y para clasificar Key
. 5) de acuerdo con su número de partición ReduceTask, obtiene los datos correspondientes a la partición resultados respectivos máquina MapTask
6) ReduceTask será llevado a la misma partición de los archivos de resultados de diferentes MapTask, estos archivos ReduceTask a continuación, la fusión (merge especie)
después de 7) mayor que el archivo combinado, proceso aleatoria es más, de nuevo en la operación lógica proceso ReduceTask (clave elimina uno por uno para reducir Group, llamadas desde el archivo definido por el usuario ( ) método)
3. prestar atención
Barajar el tamaño del búfer afectará a la eficacia de la implementación de programas de MapReduce, en principio, cuanto mayor sea el buffer, menor será el número de io disco, lleve a cabo con mayor rapidez.
parámetros de tamaño de memoria intermedia pueden ser parámetros ajustados: io.sort.mb un 100M predeterminado.
4. proceso de resolución de la fuente
context.write(k, NullWritable.get());
output.write(key, value);
collector.collect(key, value,partitioner.getPartition(key, value, partitions));
HashPartitioner();
collect()
close()
collect.flush()
sortAndSpill()
sort() QuickSort
mergeParts();
collector.close();