MapReduce编程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/crazy_scott/article/details/82981730

MapReduce Coding Criteria

单个MapReduce

单元运算

  • WordCount为例
  • 分别编写Map和Reduce函数
    • 53906415912
    • 53906420829
  • 编写main方法,设置环境变量,进行注册:
    • 53906430243

二元编程

Join

  • 对于 input,来自不同的关系表,对于MapReduce而言都是文件
  • Map过程中,需要标记来自哪个关系表
    • 把来自 R的每个元组 <a,b >转换成一个键值对 <b, <R,a >> ,其中的键就是属性 B的值
    • 把来自 S的每个元组 <b,c >,转换成一个键值对<b,<S,c>>
  • Reduce 过程
    • 具有相同 B值的元组被发送到同一个 Reduce
    • 来自 关系 R和S的、具有相同属性 B值的元组进行合并
    • 输出则是连接后的元组 <a,b,c >,通常写到一个单独的输出文件中

对于二元运算,例如Join交集并集都差不多,首先需要标记来自哪个关系表,然后再处理。

组合式MapReduce

  • 将任务划分为若干子任务,各任务之间存在依赖关系
  • 多次Join也可以认为是组合式的任务
    • 53906458982

程序实现

隐式依赖描述

  • 如何表示Job之间有依赖关系
    • 自己编程实现:
    • 53906461595

显式依赖描述

  • 好处:
    • 系统能拿到调度信息,避免上个程序运行失败导致后面出错
    • 如果自己编程,例如J4/J5都依赖于J3,其中J4/J5一定会有一个顺序,而如果让系统调度,可以利用调度策略效率最大化(通常短作业优先)
  • 在config中实现:
    • 53906537693

链式MapReduce

  • 例子:词频统计后,过滤掉词频高于10的
  • WordCount程序已经写好,不能修改
  • Map可以串很多ChainMapperReducer也可以串很多ChainReducer
    • 注意,这里的ChainReducerMapper
    • 53906544142

规则

  • 整个Job只有一个Reduce
    • 整个框架只允许一次Shuffle
    • 进行Map不会造成数据重新排列,不会改变MapReduce整体框架

编程实现

53906548744

迭代MapReduce

  • 许多机器学习算法都需要进行迭代(牛顿迭代、EM算法)
  • 迭代式任务的特征:
    • 整个任务一系列子的循环构成
    • 子任务的执行操作是完全相同的
    • 一个子任务的输出是下一个子任务的输入
    • 一个子任务是一个MapReduce Job
  • 迭代多少次,就相当于运行多少次MapReduce
  • 迭代MapReduce示意
    • 每一迭代结束时才将结果写入HDFS,下一步将结果读出
    • 非常浪费资源和IO

编程

  • runlteration()实现一个MapReduce Job
    • 53906557784
  • 判断条件为满足阈值或者迭代次数
    • 有时候并不关心具体的精确数值,只关心偏序关系(PageRank

Distribute Cache

  • 当表的大小差异很大时,使用Join会导致大量的数据移动:
    • 编程时将小表广播出去(每个节点上发一份,移动计算)
    • 53906571420
    • 53906574912
    • 例如,在Kmeans中,可以将中心点广播出去

编程实现

  • 声明

    • Job job= new Job(); 
      job.addCacheFile (new Path(filename).toUri ());
      
  • 使用

    • Path[] localPaths = context.getLocalCacheFiles();
      

Hadoop Streaming

  • Hadoop基于Java开发,但MapReduce编程不仅限于Java语言

  • 提供一个编程工具,可以允许用户使用任何可执行文件

    • 但可能会有bug
  • 多种语言混合编程

  • 原理

    • 53906590241

猜你喜欢

转载自blog.csdn.net/crazy_scott/article/details/82981730
今日推荐