• 云计算(6)--一些MapReduce的例子


    例1:文件的字符串查找

    这里reduce不做merge的工作,因为每行都是不一样的,不能merge.

    与传统的grep程序相比,使用MapReduce可以加快处理,因为1它是Distributed的,不用把所有的文件都拷到一台机器上运行,你的data可以在不同的server上,

    原因2,它能并行处理,加快处理的速度。

    例2: Reverse Web-link graph

    Map:将<source,target>置反

    Reduce: 输出每个target的source list.(不止一个)

    例3: 计算URL的访问频率

    有两个MapReduce,一个MapReduce计算每个URL的数量(类似前面的wordcount),另一个MapReduce计算比率(紧跟前面的那个MapReduce)。

    第二个MapReduce中的reducer有会进行两次pass,一次是计算overall_count,一次是计算比率

    例4: 排序

    MapReduce内部的enginer已经做了很多sorting,这样可以让我们更简单的实现sorting

    Map(注意是在一个map里面进行了排序)执行后,这些输入Map的pairs已经在接下来输入给Reduce之前按照key排好序了(在Hadoop中是按照快排进行排序)

    Reduce在接收pairs,处理这些pairs之间会对它们进行排序,比如这些pairs如果按照key来排序的话,同一个key的pairs是连续分布的,这样可以把同一个key的pairs输入给一个Reduce来处理

    上述的这个例子是要将pairs按照values进行排序后输出.

    在Map阶段,将value做为key,这样map阶段结束后输出的pairs在每个Map里面是按照value进行排序(quick sort)的。

    在Reducer阶段,在处理前,会将所有的pairs进行排序(Merge sort),然后再对这些pairs进行输出。这样所有的pairs则都是按照value进行排序了

    在这儿不能使用Hash partition来分配reducer,因为这儿我们是进行排序,如果使用hash来分配reducer处理的话,那么reducer之间就不是有序的了

    在这儿我们分配reducer是按照range来分配的,比如reducer#1处理key1-key1000的pairs,reducer#2处理key10001-key2000的pairs......

    在这个例子中我们在分配reducer的时候也要考虑keys的分布情况,比如若key10001-key2000分布的记录很多,则我们可以给这个区域多分配一些reducer来处理

  • 相关阅读:
    Maven
    Maven
    Maven
    Maven
    Maven
    Maven
    Maven
    Maven
    Maven教程
    SASS
  • 原文地址:https://www.cnblogs.com/yan2015/p/4868021.html
Copyright © 2020-2023  润新知