MapReduce1.X与2.X的对比

来源:互联网 发布:二手备案域名 编辑:程序博客网 时间:2024/04/28 20:07

MR2.X相较与MR1.X 做了比较大的优化,降低的MR中JobTracker的压力,将其资源管理及任务的生命周期管理都拆分成独立的组件,更名为YARN

MapReduce1.X

  • 架构组成:

    • JobTracker(JT)
      • 作业的管理者
      • 将作业切分成任务:MapTask和ReduceTask
      • 将任务分派给TaskTracker执行
      • 作业的监控,接受心跳信息,如果没有收到心跳信息,就切换到其他TT执行任务
    • TaskTracker:TT
      • 执行JT下发下来的任务
        -在TT上执行Task
      • 与JT通信交流,并发送心跳信息
    • MapTask
      • 开发map任务交由MapTask处理
      • 解析数据,并交给map方法处理
      • 将map的处理结果写入到本地磁盘
    • ReduceTask
      • 读取MapTask输出数据
      • 将数据按照我们自己编写的reduce方法处理
      • 输出结果写入HDFS
  • 架构图
    这里写图片描述

MapReduce2.X

  • YARN架构:

    • ResourceManager:RM

      • 负责集群的统一管理和调度
      • 处理客户端对作业的请求
      • 监控NM,随时准备其他NM替换它
    • NodeManager:NM

      • 负责本身节点资源的管理和使用
      • 定期向RM汇报心跳信息
      • 接受处理RM的命令
      • 接受处理AM的命令
      • 单个节点的资源管理
    • ApplicationMaster:AM
      • 每个应用程序对应一个MR或者Spark,负责应用程序的管理
      • 向RM申请资源(core、meory),分配给内部task
      • 与NM通信,AM在NM中
    • Container
      • 封装了CPU、Memory等资源的一个容器
      • 任务环境的抽象
    • Client
      • 提交作业
      • 查看作业进度
      • 杀死作业
  • 架构图
    这里写图片描述

  • 运行路径

    1. 用户向YATN提交应用程序,包括ApplicationMaster程序、启动ApplicationMaster命令和用户程序
    2. RM为该程序分配第一个容器,并与NM通信要求其在这个容器启动AM
    3. AM向RM注册,使得用户可以监控状态,AM将为各个任务申请资源,监控,直到结束
    4. AM以轮询的方式通过RPC协议向RM申请并领取资源。
    5. 申请资源后与对应的NM交流,启动相应任务
    6. NM为该任务设置运行环境 后,将任务命令写到脚步中,并通过该脚本启动任务
    7. 各个任务通过RPS协议与AM交互,用户可以通过AM实时查看运行状态
    8. 应用程序执行完毕,AM向RM申请注销并关闭自己

    总结为两个阶段:

    • 启动AM
    • 由AM为应用程序创建,申请资源,监控运行过程,直至结束
原创粉丝点击