hadoop - usuario - ¿Cómo puedo actualizar el rastreador de tareas para que mi asignador funcione correctamente en lugar de generar tiempo de espera?
impresion de constancias de docentes (2)
Por lo general, utiliza el Reporter para que el marco sepa que usted todavía está vivo.
Cita del javadoc:
Mapper y Reducer pueden usar el Reporter proporcionado para informar el progreso o simplemente indicar que están vivos. En escenarios donde la aplicación lleva una cantidad de tiempo insignificante para procesar pares de clave / valor individuales, esto es crucial ya que el marco puede suponer que la tarea ha agotado el tiempo de espera y eliminar esa tarea.
Olvidé qué API / método llamar, pero mi problema es que:
Mi asignador funcionará durante más de 10 minutos, y no quiero aumentar el tiempo de espera predeterminado.
Por el contrario, quiero que mi asignador envíe ping de actualización al rastreador de tareas, cuando está en la ruta del código particular que consume tiempo> 10 minutos.
Por favor, hágame saber qué API / método llamar.
Simplemente puede aumentar un contador y llamar al progress
. Esto asegurará que la tarea envíe un latido al rastreador de tareas para saber si está vivo.
En la nueva API esto se gestiona a través del contexto, ver aquí: http://hadoop.apache.org/common/docs/r1.0.0/api/index.html
p.ej
@Override
protected void map(LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
// increment counter
context.getCounter(SOME_ENUM).increment(1);
context.progress();
}
En la antigua API existe la clase de reportero: http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/mapred/Reporter.html