MR分布式计算理论

  • MapReduce设计理念:

        移动计算,而不是移动数据

        两个阶段,Map / Reduce

  • Map和Reduce之间的Shuffle、Partition、Combiner过程的理解

        Shuffle过程:每个map task都有一个内存缓冲区,存储着map的输出结果,默认100MB(也可以通过设置配置文件中的参数mapreduce.task.io.sort.mb来设置),当缓冲区快满的时候,会将缓冲区的数据以一个临时文件的方式存放到磁盘中(找个过程是独立的线程执行,默认达到缓冲区容量80%的时候会启动该线程),当整个map task结束后再对磁盘中的找个map task产生的所有零食文件进行合并,生成最终的正式输出文件,等待reduce task来拉数据。

        Partition理解:根据key或者 value及reduce的数量来决定当前的输出结果该有那个reduce task处理,默认对ken hash后再模以reduce task的数量,默认的方式只是为了平均reduce的处理能力,Partition过程可以定制。

        Combiner理解:每个reduce端合并数据时,有些数据可能像这样:“aaa”/1, “aaa”/1。对于WordCount例子,就是简单地统计单词出现的次数,如果在同一个map task的结果中有很多个像“aaa”一样出现多次的key,我们就应该把它们的值合并到一块,这个过程叫reduce也叫combine。但MapReduce的术语中,reduce只指reduce端执行从多个map task取数据做计算的过程。除reduce外,非正式地合并数据只能算做combine了。其实大家知道的,MapReduce中将Combiner等同于Reducer。Combiner的输出是Reducer的输入,Combiner绝不能改变最终的计算结果。

 

 

参考博客:https://www.cnblogs.com/ljy2013/articles/4435657.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章