java - tutorial - mapreduce mongodb
Las opciones de Hadoop no están teniendo ningún efecto(mapreduce.input.lineinputformat.linespermap, mapred.max.map.failures.percent) (4)
Para empezar con "mapred. " Es api viejo y "mapreduce. " Es una nueva API. así que será mejor que no los uses juntos. compruebe qué versión está utilizando y quédese con eso. Y también vuelva a verificar sus importaciones, ya que hay 2 NLineInputFormat aswell (mapred y mapreduce).
En segundo lugar, puede consultar este enlace : (va a pegar la parte importante)
NLineInputFormat dividirá N líneas de entrada como una división. Entonces, cada mapa obtiene N líneas.
Pero el RecordReader sigue siendo LineRecordReader, que lee una línea a la vez, por lo que Key es el desplazamiento en el archivo y Value es la línea. Si desea N líneas como clave, puede anular LineRecordReader.
Estoy intentando implementar un trabajo de MapReduce, donde cada uno de los mapeadores tomaría 150 líneas del archivo de texto, y todos los mapeadores se ejecutarían simul- táneamente; Además, no debería fallar, no importa cuántas tareas fallan.
Aquí está la parte de la configuración:
JobConf conf = new JobConf(Main.class);
conf.setJobName("My mapreduce");
conf.set("mapreduce.input.lineinputformat.linespermap", "150");
conf.set("mapred.max.map.failures.percent","100");
conf.setInputFormat(NLineInputFormat.class);
FileInputFormat.addInputPath(conf, new Path(args[0]));
FileOutputFormat.setOutputPath(conf, new Path(args[1]));
El problema es que hadoop crea un asignador para cada línea de texto, parece que se ejecutan secuencialmente y, si falla, el trabajo falla.
De esto deduzco que la configuración que he aplicado no tiene ningún efecto.
¿Qué hice mal?
Supongo que estás usando Hadoop 0.20. En 0.20, el parámetro de configuración es "mapred.line.input.format.linespermap" y está utilizando "mapreduce.input.lineinputformat.linespermap". Si el parámetro de configuración no está establecido, se predetermina a 1, por lo que está viendo el comportamiento mencionado en la consulta.
Aquí está el fragmento de código de 0.20 NLineInputFormat.
public void configure (JobConf conf) {N = conf.getInt ("mapred.line.input.format.linespermap", 1); }
La configuración de Hadoop es a veces un dolor real, no documentada correctamente, y he observado que el parámetro de configuración también cambia constantemente entre lanzamientos. La mejor apuesta es ver el código cuando no esté seguro de algunos parámetros de configuración.
Las opciones de la nueva API son en su mayoría indocumentadas
Si desea encontrar rápidamente los nombres correctos de las opciones para la nueva API de hadoop, use este enlace: http://pydoop.sourceforge.net/docs/examples/intro.html#hadoop-0-21-0-notes .