zoukankan      html  css  js  c++  java
  • hadoop之MapReduce WordCount分析

    MapReduce的设计思想

    主要的思想是分而治之(divide and conquer),分治算法。
    将一个大的问题切分成很多小的问题,然后在集群中的各个节点上执行,这既是Map过程。在Map过程结束之后,会有一个Ruduce的过程,这个过程即将所有的Map阶段产出的结果进行汇集。
    写MapReduce程序的步骤:
    1.把问题转化为MapReduce模型
    2.设置运行的参数
    3.写map类
    4.写reduce类
    例子:统计单词个数
    将文件拆分成splits,每个文件为一个split,并将文件按行分割形成<key,value>对,MapReduce框架自动完成,其中行偏移量(即key值)包括了回车所占的字符数

    将分割好的<key,value>对交给用户定义的map方法(TokenizerMapper)进行处理,生成新的<key,value>对。

    得到map方法输出的<key,value>对后,Mapper会将它们按照key值进行排序,并执行Combine过程,将key至相同value值累加,得到Mapper的最终输出结果。

    Reducer先对从Mapper接收的数据进行排序,再交由用户自定义的reduce方法(IntSumReducer)进行处理,
    得到新的<key,value>对,并作为WordCount的输出结果


    下面我们看官方给出的例子:

    1:将Block块分割成三个Split
    2:每个Split对应一个mapper
    3: 三个mapper输出结果进行Shuffling,每个map的输出只是简单的key-value而非key-valuelist,
       所以洗牌的工作就是将map输出转化为reducer的输入的过程。
       在reducer开始之前shuffle要做的事情分为两步copy和sort 阶段。
  • 相关阅读:
    HDU5643-King's Game
    KM算法详解+模板
    二分图最大匹配(匈牙利算法)
    二分图判断(交叉染色)
    能被2、3、4、5、6、7、8、9 等数整除的数的特征
    Codeforces Round #306 (Div. 2) ABCDE(构造)
    HDU5627--Clarke and MST (bfs+位运算)
    Educational Codeforces Round 82 (Rated for Div. 2)
    2020 CCPC Wannafly Winter Camp Day5
    Codeforces Round #618 (Div. 2)
  • 原文地址:https://www.cnblogs.com/crazyht/p/5087051.html
Copyright © 2011-2022 走看看