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的组调用一次reduce()方法
  • Driver阶段
    • 相当于YARN集群的客户端,用于我们整个程序到集群。

你可能感兴趣的:(Hadoop之MapReduce学习总结)