Ejecución de tareas especulativas de Hadoop

En el documento de MapReduce de Google, tienen una tarea de respaldo, creo que es lo mismo con la tarea especulativa en Hadoop. ¿Cómo se implementa la tarea especulativa? Cuando comienzo una tarea especulativa, ¿la tarea comienza desde el principio como la más antigua y lentamente, o simplemente comienza desde donde ha llegado la tarea más antigua (si es así, tiene que copiar todo el estado intermedio y los datos?)

Un problema con el sistema Hadoop es que al dividir las tareas en muchos nodos, es posible que algunos nodos lentos limiten el rest del progtwig.

Las tareas pueden ser lentas por varias razones, incluida la degradación del hardware o la configuración incorrecta del software, pero las causas pueden ser difíciles de detectar, ya que las tareas aún se completan con éxito, aunque después de un tiempo más prolongado de lo esperado. Hadoop no intenta diagnosticar y corregir tareas de ejecución lenta; en cambio, intenta detectar cuándo una tarea se está ejecutando más lento de lo esperado y lanza otra tarea equivalente como respaldo. Esto se denomina ejecución especulativa de tareas.

Por ejemplo, si un nodo tiene un controlador de disco lento, entonces puede estar leyendo su entrada a solo el 10% de la velocidad de todos los otros nodos. Por lo tanto, cuando ya se han completado 99 tareas de mapa, el sistema aún está esperando la verificación de la última tarea del mapa, lo que lleva mucho más tiempo que todos los otros nodos.

Al forzar a las tareas a ejecutarse de forma aislada unas de otras, las tareas individuales no saben de dónde provienen sus entradas. Las tareas confían en que la plataforma Hadoop solo entregue la entrada adecuada. Por lo tanto, la misma entrada se puede procesar varias veces en paralelo, para explotar las diferencias en las capacidades de la máquina. Como la mayoría de las tareas en un trabajo están llegando a su fin, la plataforma Hadoop progtwigrá copias redundantes de las tareas restantes en varios nodos que no tienen otro trabajo que realizar. Este proceso se conoce como ejecución especulativa. Cuando se completan las tareas, anuncian este hecho al JobTracker. Cualquiera que sea la copia de una tarea que termine primero se convierte en la copia definitiva. Si otras copias se ejecutaban especulativamente, Hadoop le dice a los TaskTrackers que abandonen las tareas y descarten sus resultados. Los Reductores luego reciben sus entradas de cualquier asignador completado con éxito, primero.

La ejecución especulativa está habilitada de manera predeterminada. Puede deshabilitar la ejecución especulativa para los correlacionadores y reductores configurando las mapred.map.tasks.speculative.execution y mapred.reduce.tasks.speculative.execution JobConf en false, respectivamente, utilizando la antigua API, mientras que con la API más nueva puede considerar cambiar mapreduce.map.speculative y mapreduce.reduce.speculative .

Entonces, para responder a su pregunta, comienza de cero y no tiene nada que ver con cuánto ha hecho / completado la otra tarea.

Referencia: http://developer.yahoo.com/hadoop/tutorial/module4.html