MapReduce小结

原创 2013年12月02日 15:52:20
1、MapReduce Provides:
      -Automatic parallelization & distribution;
      -Fault-tolerance;
      -Status and monitoring tools;
      -A clean abstraction for programmers
(1)map (in_key, in_value) ->(out_key, intermediate_value) list:
      -Records from the data source (lines out of files, rows of a database, etc) are fed into the map function as key*value pairs: e.g.,(filename, line). 
      -map() produces one or more intermediate values along with an output key from the input.
(2)reduce (out_key, intermediate_value list) ->out_value list:
      -After the map phase is over, all the intermediate values for a given output key are combined together into a list;
      -reduce() combines those intermediate values into one or more final values for that same output key  (in practice, usually only one final value per key)
2、Parallelism
(1)map() functions run in parallel,creating different intermediate values from different input data sets
(2)reduce() functions also run in parallel,each working on a different output key
(3)All values are processed independently
(4)Bottleneck: reduce phase can’t start until map phase is completely finished.
3、MapReduce Conclusions
(1)MapReduce has proven to be a useful abstraction in many areas 
(2)Greatly simplifies large-scale computations 
(3)Functional programming paradigm can be applied to large-scale applications
(4)You focus on the “real” problem, library deals with messy details
4、Example Word Count Map()
public static class MapClass extends MapReduceBase implements Mapper {   
  private final static IntWritable one = new IntWritable(1);
  private Text word = new Text();
 
  public void map(WritableComparable key, Writable value,OutputCollector output, Reporter reporter)throws IOException {
    String line = ((Text)value).toString();
    StringTokenizer itr = new StringTokenizer(line);
    while (itr.hasMoreTokens()) {
      word.set(itr.nextToken());
      output.collect(word, one);
    }
  }
}
Reduce()
public static class Reduce extends MapReduceBase implements Reducer {
  public void reduce(WritableComparable key, Iterator  values, OutputCollector output, Reporter reporter)throws IOException {
    int sum = 0;
    while (values.hasNext()) {
       sum += ((IntWritable) values.next()).get();
    }
   output.collect(key, new IntWritable(sum));
  }
}
public static void main(String[] args) throws IOException {
       JobConf conf = new JobConf();
       conf.setOutputKeyClass(Text.class);
       conf.setOutputValueClass(IntWritable.class);
       conf.setMapperClass(MapClass.class);
       conf.setCombinerClass(Reduce.class);
       conf.setReducerClass(Reduce.class);
       conf.setInputPath(new Path(args[0]));
       conf.setOutputPath(new Path(args[1]));
       JobClient.runJob(conf);
}
5、One time setup
      -set hadoop-site.xml and slaves
   -Initiate namenode
       -Run Hadoop MapReduce and DFS
       -Upload your data to DFS
       -Run your process…
       -Download your data from DFS
*A simple programming model for processing large dataset on large set of computer cluster
*Fun to use, focus on problem, and let the library deal with the messy detail
6、References
      - Original paper (http://labs.google.com/papers/mapreduce.html)
      -On wikipedia (http://en.wikipedia.org/wiki/MapReduce)
      -Hadoop – MapReduce in Java (http://lucene.apache.org/hadoop/)
      -Starfish - MapReduce in Ruby (http://rufy.com/starfish/)

相关文章推荐

WordCount案例---MapReduce学习小结(-)

距离第一次接触MapReduce已经过去了很久很久.回忆起来最开始的时候,看到一个程序那么多代码.都不知道如何入手…走了很多的弯路.到后来,慢慢的一步步学习中,才发现它并不是一个什么不可跨越的坑. ...

Java学习IO流小结--字节流

  • 2015年07月11日 14:59
  • 218KB
  • 下载

CSS小结有关整体

  • 2014年10月25日 19:31
  • 36KB
  • 下载

Levmar使用小结(一)

Levmar是非线性优化的一个库,使用起来很方便。但是刚开始接触时会有点头疼,尤其是如果不懂LM算法,直接使用的话,就会满脑子“这是啥?这都是啥?”  最近在学习非线性优化的方法,总结一下希望可以帮助...
  • hhh0209
  • hhh0209
  • 2016年05月11日 15:49
  • 1964

蜂鸣器小结1

  • 2012年11月08日 21:58
  • 278B
  • 下载

MM4小结 MM4机器测试步骤

  • 2013年12月09日 21:20
  • 1.75MB
  • 下载

Linux设置环境变量小结:设置永久变量&临时变量 全局变量&局部变量

1.总结背景   在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容。如果每次都到安装目标文件夹内,找到可执行文件来进行操作...

VB编程经验小结doc

  • 2014年07月21日 03:12
  • 537KB
  • 下载

HTML小结文档

  • 2013年07月29日 14:58
  • 42KB
  • 下载

整数逆序输出 几种方法小结(Java实现)

整数逆序输出 几种方法小结(Java实现)
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MapReduce小结
举报原因:
原因补充:

(最多只允许输入30个字)