zoukankan      html  css  js  c++  java
  • Mapreduce实例——ChainMapReduce

    实验目的

    1.准确理解ChainMapReduce的设计原理

    2.熟练掌握ChainMapReduce的程序代码编写

    3.了解ChainMapReduce的使用场景

    实验原理

    一些复杂的任务难以用一次MapReduce处理完成,需要多次MapReduce才能完成任务。Hadoop2.0开始MapReduce作业支持链式处理,类似于工厂的的生产线,每一个阶段都有特定的任务要处理,比如提供原配件——>组装——打印出厂日期,等等。通过这样进一步的分工,从而提高了生成效率,我们Hadoop中的链式MapReduce也是如此,这些Mapper可以像水流一样,一级一级向后处理,有点类似于Linux的管道。前一个Mapper的输出结果直接可以作为下一个Mapper的输入,形成一个流水线。

    链式MapReduce的执行规则:整个Job中只能有一个Reducer,在Reducer前面可以有一个或者多个Mapper,在Reducer的后面可以有0个或者多个Mapper。

    Hadoop2.0支持的链式处理MapReduce作业有一下三种:

    (1)顺序链接MapReduce作业

    类似于Unix中的管道:mapreduce-1 | mapreduce-2 | mapreduce-3 ......,每一个阶段创建一个job,并将当前输入路径设为前一个的输出。在最后阶段删除链上生成的中间数据。

    (2)具有复杂依赖的MapReduce链接

    若mapreduce-1处理一个数据集, mapreduce-2 处理另一个数据集,而mapreduce-3对前两个做内部连结。这种情况通过Job和JobControl类管理非线性作业间的依赖。如x.addDependingJob(y)意味着x在y完成前不会启动。

    (3)预处理和后处理的链接

    一般将预处理和后处理写为Mapper任务。可以自己进行链接或使用ChainMapper和ChainReducer类,生成得作业表达式类似于:

    MAP+ | REDUCE | MAP*

    如以下作业: Map1 | Map2 | Reduce | Map3 | Map4,把Map2和Reduce视为MapReduce作业核心。Map1作为前处理,Map3, Map4作为后处理。ChainMapper使用模式:(预处理作业),ChainReducer使用模式:(设置Reducer并添加后处理Mapper)

    本实验中用到的就是第三种作业模式:预处理和后处理的链接,生成得作业表达式类似于 Map1 | Map2 | Reduce | Map3

     

    启动hadoop

     

    生成文件

     

    创建项目、写入代码

     

    运行

     

    结果:

     

  • 相关阅读:
    ES6 | 关于class类 继承总结
    ES6 | class类的基本语法总结
    开发辅助 | 阿里图标库iconfont入门使用
    JS基本功 | JavaScript专题之数组 方法总结
    前端模块化 | 解读JS模块化开发中的 require、import 和 export
    IOS开发中UITableView和UITableViewCell的几种样式
    SSM项目的搭建
    Linux离线安装Docker
    Http项目转Https项目
    SpringBoot项目的搭建
  • 原文地址:https://www.cnblogs.com/a8047/p/15652581.html
Copyright © 2011-2022 走看看