11
MapReduc e Es un sistema de procesamiento de datos por lotes, distribuido y en paralelo La función map() se ejecutan en paralelo, creando diferentes valores intermedios de diferentes conjuntos de datos de entrada La función de reduce() se ejecuta en paralelo, combina los valores intermedios en uno o más valores finales para la misma clave de salida.

MapReduce

Embed Size (px)

DESCRIPTION

MapReduce. Es un sistema de procesamiento de datos por lotes, distribuido y en paralelo La función map () se ejecutan en paralelo, creando diferentes valores intermedios de diferentes conjuntos de datos de entrada - PowerPoint PPT Presentation

Citation preview

Page 1: MapReduce

MapReduce Es un sistema de procesamiento de datos por lotes, distribuido y en

paralelo

La función map() se ejecutan en paralelo, creando diferentes valores intermedios de diferentes conjuntos de datos de entrada

La función de reduce() se ejecuta en paralelo, combina los valores intermedios en uno o más valores finales para la misma clave de salida.

Page 2: MapReduce

MapReduce Se deben implementar dos interfaces:

map (key, value) -> (inter_key, inter_value) list

reduce (inter_key, inter_value list) -> (out_key, out_value) list

Se tienen un JobTracker maestro y un TaskTraker esclavo por nodo

El maestro es responsable de la programación de tareas en los esclavos, su seguimiento y volver a ejecutar las tareas fallidas.

Los esclavos ejecutan las tareas según las instrucciones del maestro.

La configuración del Job contiene mínimamente:

el directorio de los archivos de entrada

el directorio donde quedaran los archivos de salida,

el nombre del programa que ejecutara las tareas de mapeo y reducción,

los nombres de las funciones o de las clases de map y de reduce.

Page 3: MapReduce

http://www.cloudera.com/content/cloudera/en/resources/library/training/introduction-to-apache-mapreduce-and-hdfs.html

EJEMPLO CONTAR PALABRASUna sencilla aplicación que cuenta el número de ocurrencias de cada palabra en un conjunto de entrada.

Page 4: MapReduce

public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text();

public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } } }

El método de map procesa una línea a la vez. divide la línea en tokens separados por espacios en blanco, a través de la StringTokenizer, Emite un par clave-valor <<palabra>, 1>.

CÓDIGO CONTAR PALABRAS: MAP

Page 5: MapReduce

conf.setCombinerClass(Reduce.class);

El efecto en el proceso WordCount es entregar un consolidad local de ocurrencias de cada palabra.

CÓDIGO CONTAR PALABRAS CON COMBINER.

En la configuración del job se adiciona como parámetro la siguiente instrucción.

< Hello, 1>< World, 1>< Bye, 1>< World, 1>

< Bye, 1>< Hello, 1>< World, 2>

Page 6: MapReduce

public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) { sum += values.next().get(); } output.collect(key, new IntWritable(sum)); } }

La implementación reductor, a través del método de reduce suma los valores, que son las sumas locales entregadas por la fase anterior.

CÓDIGO CONTAR PALABRAS: REDUCE

Page 7: MapReduce

JobConf: Es la interfaz principal para establecer los parámetros de configuración del trabajo de MapReduce, como paths de archivos de entrada y salida, la clase de mapeo y de reducción, etc.

Algunos de estos parámetros se pasan por consola (línea de comandos) o por la GUI en propiedades del job.

CÓDIGO CONTAR PALABRAS:JOBCONFpublic static void main(String[] args) throws Exception

{JobConf conf = new JobConf(WordCount.class);

conf.setJobName("wordcount");

conf.setOutputKeyClass(Text.class);

conf.setOutputValueClass(IntWritable.class);

conf.setMapperClass(Map.class);conf.setCombinerClass(Reduce.class);conf.setReducerClass(Reduce.class);

conf.setInputFormat(TextInputFormat.class);

conf.setOutputFormat(TextOutputFormat.class);

FileInputFormat.setInputPaths(conf, new Path(args[0]));

FileOutputFormat.setOutputPath(conf, new Path(args[1]));

JobClient.runJob(conf);}

Page 8: MapReduce

Ejecución del proceso:

$ bin/hadoop jar /usr/joe/wordcount.jar org.myorg.WordCount

/usr/joe/wordcount/input /usr/joe/wordcount/output

bin/hadoop Indica que es un proceso hadoop.

jar Indica el tipo de lenguaje del programa principal (java).

/usr/joe/wordcount.jar Nombre del programa a ejecutar

org.myorg.WordCount Nombre clase donde está el main del programa.

$/usr/joe/wordcount/input Ruta del directorio de los archivos de entrada en HDFS

$/usr/joe/wordcount/output Ruta del directorio de los archivos de salida en HDFS

CÓDIGO CONTAR PALABRAS: EJECUCIÓN POR CONSOLA

Page 9: MapReduce

EJECUCIÓN DEL CÓDIGO CONTAR PALABRASPOR INTERFAZ GRAFICA (HUE)

Page 10: MapReduce

EJECUCIÓN DEL CÓDIGO CONTAR PALABRASPOR INTERFAZ GRAFICA (HUE)