zoukankan      html  css  js  c++  java
  • 云计算(5)---MapReduce

    什么是MapReduce

    例如用MapReduce如何计算12+22+32+42

    用MapReduce执行Wordcount

    步骤1:Map

    map task1 和map task2是独立,并行进行

    并行处理能加快速度

    Map阶段输出起中间媒介作用的(key,value)值,做为Reduce的输入

    步骤2 Reduce

    Map的输出是Reduce的输入,最后Reduce输出右边的(key,value)

    Reduce阶段不是独立进行的,而是根据key值进行分组,同一个key值的record在一个Reduce进程中运行,这样它们才能sum up.

    Reduce具体的工作(partition和merge)

    相同的key分到一个Reduce task, 具体分给哪个reduce处理,可以用Hash partitioning来计算,之所以选择Hash是因为它映射的hash number能做到均匀负载

    Hadoop code - Map(Hadoop是开源的,而MapReduce不是的,MapReduce是由google发明的)

    Wordcount的代码

    MapReduce是由Google发明的,但是并没有公开实现代码,只是发表了关于它的论文

    Yahhoo的工程师写了开源的MapReduce的实现,所以它变为了Apache Hadoop,现在被广泛应用

    MapClass继承了基础的MapReduceBase类,实现了一个接口(一个模板接口)

    Main function 是map, key和value(是text类型的数据)作为参数,有一个output,和reporter(以防止你想事后report一些事情)

    Hadoop code - Reduce

    Main function为reduce

    一个key调用一次reduce function,多个key则调用多次reduce function

    reduce function将对应同一个key的values相加.

    Hadoop code - Driver

    conf.setJobName(“mywordcount”);       设置job的名字

     conf.setOutputKeyClass("Text.class");   设置output key的class为words

    conf.setOutputValueClass(IntWritable.class); 设置values的class为 ints

    conf.setMapperClass();设置map的class

    conf.setReducerClass();设置reduce的class

    FileInputFormat.addInputPath(); 将data的文件目录加入inputPath

    FileOutputFormat.setOutputPath(); 设置output的path目录

    JobClient.runJob(conf);  run这个job

  • 相关阅读:
    Shell编程之运算符和环境变量配置文件
    Shell编程之变量
    PCI BAR设置过程[转]
    基于ARM的SoC设计入门[转]
    负载均衡
    [转]vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
    VC/DDK/DriverWorks开发环境配置
    windows下注册表脚本编写
    _cdecl与_stdcall区别
    在C语言中破坏函数调用堆栈
  • 原文地址:https://www.cnblogs.com/yan2015/p/4865547.html
Copyright © 2011-2022 走看看