Hadoop之MapReduce学习总结

  1. 优点
  • MapReduce 易于编程,仅仅实现一些简单的接口,就可以完成一个分布式程序。并且部署到廉价的服务器上。
  • 良好的扩展性,通过简单的增加服务器就可以增加它的运算性能
  • 高容错性,MapReduce设计的初衷就是为了程序能在在廉价的机器上运行, 这就要求具有高容错性。一台机器挂了,就把运算任务转移到另外一台机器,不至于这个任务失败,且不需要人工操作
  • 适合pb级别的数据进行离线处理,实现上千台服务器并发工作,提供处理能力。
  1. 缺点
  • 不擅长实时计算
  • 不擅长流式计算,MapReduce的输入数据是静态的,提前准备好的。
  • 不擅长DAG(有向图)计算,多个程序存在依赖。每个MapReduce结果都会写入磁盘,这样做会导致大量磁盘IO,造成程序性能严重降低。
  1. MapReduce编程核心思想
  1. MapReduce 一般分为两个阶段,Map(分)和Reduce(和)
  2. Map阶段并发MapTask,安全并行运行,互不干扰。
  3. Reduce阶段的并发ReduceTask,完全互不相关。但是它们依赖上一阶段的所有MapTask的运行结果
  4. MapReduce编程只能又一个Map阶段和Reduce阶段。
  1. MapReduce进程
  • MrAppMaster:负责整个程序的过程调度及状态协调
  • MapTask
  • ReduceTask
  1. MapReduce编程规范
  • Mapper阶段
    • 用户自定义的Mapper要继承自己的父类
    • Mapper的输入数据是KV对的形式
    • Mapper中的业务逻辑写在map()方法中
    • mapper的输出数据是KV对形式
    • map()方法(Map进程)对每一个KV对调用一次
  • Reducer阶段
    • 用户自定义的Reducer要继承自己的父类
    • Reducer的输入类型对应Mapper的输出类型,也是kv
    • Reducer的业务逻辑写在reduce()方法中
    • ReduceTask进程对每一组形同k的<k,v>组调用一次reduce()方法
  • Driver阶段
    • 相当于YARN集群的客户端,用于我们整个程序到集群。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、MapReduce应用场景 Hadoop的Mapreduce是一个使用简单的框架,基于它写出来的程序可以运行在...
    老实李阅读 1,444评论 0 9
  • MapReduce工作流程 流程图如下 解释上面的流程是整个mapreduce最全工作流程,但是shuffle过程...
    ZFH__ZJ阅读 575评论 0 3
  • 70岁的何大爷,老伴已经去世了,他有个儿子叫何文建,爷俩性格都非常的顽固暴躁,大爷酷爱喝酒,但自从两年前患上心脏...
    刘远鹏阅读 130评论 0 1
  • 第二天,昨天的作业会让我们清晰,一个人对待外界人事物的态度也是可以经由挖掘和数算外界人事物带给自己的价值而有所不同...
    秋水长天_2fad阅读 177评论 0 0
  • 只要我们拥有生命 就什么都可以争取 If only we are alive, we can strive for...
    青禾甜品阅读 191评论 0 0