1 / 11

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

Download Presentation

MapReduce

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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.

  2. 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 TaskTrakeresclavo 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.

  3. EJEMPLO CONTAR PALABRAS Una sencilla aplicación que cuenta el número de ocurrencias de cada palabra en un conjunto de entrada. http://www.cloudera.com/content/cloudera/en/resources/library/training/introduction-to-apache-mapreduce-and-hdfs.html

  4. CÓDIGO CONTAR PALABRAS: MAP publicstatic class Mapextends 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 mapprocesa 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>.

  5. CÓDIGO CONTAR PALABRAS CON COMBINER. En la configuración del job se adiciona como parámetro la siguiente instrucción. conf.setCombinerClass(Reduce.class); El efecto en el proceso WordCount es entregar un consolidad local de ocurrencias de cada palabra. < Hello, 1> < World, 1> < Bye, 1> < World, 1> < Bye, 1> < Hello, 1> < World, 2>

  6. CÓDIGO CONTAR PALABRAS: REDUCE 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.

  7. CÓDIGO CONTAR PALABRAS:JOBCONF public static void main(String[] args) throws Exception { JobConfconf = 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); } 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.

  8. CÓDIGO CONTAR PALABRAS: EJECUCIÓN POR CONSOLA • 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.WordCountNombre 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 enHDFS

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

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

  11. BIBLIOGRAFÍA http://vimeo.com/3584536 http://archive.cloudera.com/cdh/3/hadoop/mapred_tutorial.html#Source+Code http://archive.cloudera.com/cdh/3/hadoop/api/org/apache/hadoop/mapred/Mapper.html http://archive.cloudera.com/cdh/3/hadoop/api/org/apache/hadoop/mapred/Reducer.html http://archive.cloudera.com/cdh/3/hadoop/api/org/apache/hadoop/mapred/JobConf.html http://java.dzone.com/articles/running-hadoop-mapreduce

More Related