• MapReduce


    什么是MapReduce ?

    MapReduce是一种计算模型,简单的说就是将大批量的任务分解(Map)运行,然后再将分解运行的结果合并(Reduce)成终于结果。这样做的优点是任务在被分解后。能够通过大量机器进行并行计算。降低整个操作的时间。


    Mapping Lists(分解数据列表)

    MapReduce程序的第一步叫做mapping,在这一步会有一些数据元素作为Mapper函数的输入数据。每次一个。

    Mapper会把每次map得到的结果单独的传到一个输出数据元素里。

      




    Reducing Lists(合并数据列表)


    Reducing能够把数据聚集在一起。

    reducer函数接收来自输入列表的迭代器,它会把这些数据聚合在一起,然后返回一个输出值。

    Reducing一般用来生成”总结“数据,把大规模的数据转变成更小的总结数据。

    比方。"+"能够用来作一个reducing函数,去返回输入数据列表的值的总和。


    举例:


    Map-Reduce框架的运作全然基于<key,value>对,即数据的输入是一批<key,value>对,生成的结果也是一批<key,value>对,仅仅是有时候它们的类型不一样而已。


    一个Map-Reduce任务的运行过程以及数据输入输出的类型例如以下所看到的:

    (input)<k1,v1> -> map -> <k2,v2> -> combine -> <k2,v2> -> reduce -> <k3,v3>(output)


    以下通过一个的样例来具体说明这个过程
    1 WordCount(词频统计)演示样例

    这也是Hadoop自带的一个样例,目标是统计文本文件里单词的个数。

    如果有例如以下的两个文本文件来执行WorkCount程序:

    Hello World Bye World  

    Hello Hadoop GoodBye Hadoop


    2 map数据输入

    Hadoop针对文本文件缺省使用LineRecordReader类来实现读取,一行一个key/value对。key取偏移量,value为行内容。

    下表是map1的输入数据:

    Key1 Value1
    0 Hello World Bye World

    下表是map2的输入数据:

    Key1 Value1
    0 Hello Hadoop GoodBye Hadoop


    3 map输出/combine输入

    下表是map1的输出结果

    Key2 Value2
    Hello 1
    World 1
    Bye 1
    World 1

    下表是map2的输出结果

    Key2 Value2
    Hello 1
    Hadoop 1
    GoodBye 1
    Hadoop 1


    4 combine输出

    combiner类实现将同样key的值合并起来,它也是一个Reducer的实现。

    下表是combine1的输出

    Key2 Value2
    Hello 1
    World 2
    Bye 1

    下表是combine2的输出

    Key2 Value2
    Hello 1
    Hadoop 2
    GoodBye 1


    5 reduce输出

    Reducer类实现将同样key的值合并起来。

    下表是reduce的输出

    Key2 Value2
    Hello 2
    World 2
    Bye 1
    Hadoop 2
    GoodBye 1

    即实现了WordCount(词频统计)的处理。



    下图是用MapReduce实现(WordCount)词频统计的流程图:

    003900rhr4g1trt77mt4bd

  • 相关阅读:
    hdu 6053 TrickGCD(筛法+容斥)
    hdu 6040 Hints of sd0061(stl: nth_element(arr,arr+k,arr+n))
    hdu 6055 Regular polygon
    POJ
    WPF页面后台代码InitializeComponent()报错
    C#更新packages
    git--撤销添加&放弃修改&代码冲突
    git--新建分支&提交代码
    foreach 改变集合时不能使用
    VirtualBox 共享文件夹设置
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/5209475.html
Copyright © 2020-2023  润新知