MapReduce的计算模型(编程模型)

 

MapReduce的主要应用场景

  可以转化为MR任务的条件:

  • 问题必须可以拆分
  • 子问题必须独立
  • 数据结构能够满足key-value的这样的模式

  常见场景:

  • 计数与求和,如:日志查询、统计分析
  • 整理归类,如:构建倒排索引,ETL(Extract-Transform-Load 用来描述将数据从来源端经过抽取(extract)、交互转换(transform)、加载(load)至目的端的过程。)、数据查询校验
  • 分布式任务执行,如:性能测试
  • 排序,排重,如:数据分析,ETL
  • 关系运算,如:连接、投影
  • 图处理,如:网页索引,图分析

 MapReduce的不适用的场景

  • 任务之间有结果依赖,如 斐波那契数列 Fn=F(n-1)+F(n-2)
  • 处理需要及时相应的任务,高并发请求的任务

MapReduce开发基本思路和流程

  思路

  • 任务是否可以拆分?
  • 子任务是否独立?
  • 树立业务需求,将数据需求转化为(K,V)模式
  • 选择设计K和V
  • 设计K和V的经过map和reduce的变换过程,一次迭代不够则需要多次

  流程

  • 继承Mapper类,实现map函数
  • 继承Reducer类,实现reduce函数
  • 设置Job相关信息
  • 提交Job运行

MapReduce    Java API

posted @ 2018-05-30 11:43  帅_詹姆斯邦德  阅读(308)  评论(0编辑  收藏  举报