原MapReduce与YARN比对
来源:互联网 发布:淘宝稻香村哪个是真的 编辑:程序博客网 时间:2024/04/30 08:53
一、原 MapReduce 程序的流程
1. 首先用户程序 (JobClient) 提交了一个 job,job 的信息会发送到 Job Tracker 中,Job Tracker 是 Map-reduce 框架的中心,他需要与集群中的机器定时通信 (heartbeat), 需要管理哪些程序应该跑在哪些机器上,需要管理所有 job 失败、重启等操作。
2. TaskTracker 是 Map-reduce 集群中每台机器都有的一个部分,他做的事情主要是监视自己所在机器的资源情况。
3. TaskTracker 同时监视当前机器的 tasks 运行状况。TaskTracker 需要把这些信息通过 heartbeat(心跳)发送给 JobTracker,JobTracker 会搜集这些信息以给新提交的 job 分配运行在哪些机器上。
二、YARN框架
YARN 仍然是Master/Slave 结构,在整个资源管理框架中,ResourceManager 为Master,NodeManager 为Slave,ResourceManager 负责对各个NodeManager 上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager 申请资源,并要求NodeManger 启动可以占用一定资源的任务。由于不同的ApplicationMaster 被分布到不同的节点上,因此它们之间不会相互影响。
YARN 的工作流程分为以下几个步骤:
步骤1 用户向YARN 中提交应用程序, 其中包括ApplicationMaster 程序、启动ApplicationMaster 的命令、用户程序等。
步骤2 ResourceManager 为该应用程序分配第一个Container, 并与对应的Node-Manager 通信,要求它在这个Container 中启动应用程序的ApplicationMaster。
步骤3 ApplicationMaster 首先向ResourceManager 注册, 这样用户可以直接通过ResourceManage 查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。
步骤4 ApplicationMaster 采用轮询的方式通过RPC 协议向ResourceManager 申请和领取资源。
步骤5 一旦ApplicationMaster 申请到资源后,便与对应的NodeManager 通信,要求它启动任务。
步骤6 NodeManager 为任务设置好运行环境(包括环境变量、JAR 包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。
步骤7 各个任务通过某个RPC 协议向ApplicationMaster 汇报自己的状态和进度,以让ApplicationMaster 随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC 向ApplicationMaster 查询应用程序的当前运行状态。
步骤8 应用程序运行完成后,ApplicationMaster 向ResourceManager 注销并关闭自己。
- 原MapReduce与YARN比对
- YARN与MapReduce
- mapreduce与mapreduceV2/yarn
- YARN - 比较 YARN 与 MapReduce 1
- yarn与第一代mapreduce比较
- YARN与MapReduce的区别
- Mapreduce与Yarn 原理分析
- 【MR】MapReduce 1 与 MapReduce 2(YARN)框架对比
- 【MR】MapReduce 1 与 MapReduce 2(YARN)框架对比
- 新旧 Hadoop MapReduce 框架比对
- 新旧 Hadoop MapReduce 框架比对
- 【Hadoop】Hadoop/Yarn中hdfs与mapreduce相关问题汇总
- 【Hadoop】Hadoop/Yarn中hdfs与mapreduce相关问题汇总
- Hadoop、MapReduce、YARN和Spark的区别与联系
- Yarn MapReduce job数与进程数是对应的
- Hadoop On Yarn Mapreduce运行原理与常用数据压缩格式
- MapReduce与升级版Yarn系统架构图
- Hadoop On Yarn Mapreduce运行原理与常用数据压缩格式
- [iOS]使用NSProxy实现消息转发机制,模拟多重继承
- Machine Learning Project 2 Part A
- hdu 1466 计算直线的交点数 动态规划第一题
- Android DragImageView下拉拖动图片放大
- lua学习--系列1
- 原MapReduce与YARN比对
- IOS开发之纯代码界面----基本控件使用篇4
- 【OpenSSL】Memory BIO
- 习题3—6
- 可能是最全的Java单例模式讨论
- [C#基础]关于何时使用XmlSerializer的构造函数(Type, Type[])
- iOS开发——多线程加锁常用方法
- Linux-(2)Linux下的基本文件操作
- VC++ 6.0实现视频捕捉(VFW)