之前看了那么些源码, 大致对整个Yarn的运行过程有了一个了解, 总结一下
首先每个Yarn集群都有一个Resource Manager 以及若干个NodeManager
Resource Manager主要有两个对象, 一个就是Scheduler, 还有一个就是Applications Manager ASM
Scheduler有FIFO和Fair等, 主要作用就是根据Node Manager的资源使用状况来分配container。
当然还有一种Uber模式, 具体就是满足7个条件后就会只用一个container去跑整个Job
Applications Manager主要是管理所有的Application Master的, AM创建后就和ASM注册, 后面有各种资源的请求都会通过ASM来进行
NodeManager上面会运行AppMaster, 其实AM就是一个特殊的Container, Job提交后会先创建一个AM的container, 之后通过这个AM Container去协调整个Job的运行。
NM会和Resource Manger进行心跳, 这样RM就知道每个NM的资源状况, 当有container的申请的时候就会找对应的NM去分配container, 其顺序为:
1.data所在的NM优先
2.如果1没有, 那么找同一个机架 (rack)上的NM
3.如果1,2 都没有, 那么就在集群上面随机寻找一个
ApplicationMaster是为每个Job创建的一个管理container。 他对这个Job的情况进行资源申请, container的管理, 任务的管理(和NM通信进行启动停止重跑等)
他也会和RM通信, 去要求分配各种资源
container本身的话其实就是在Node Manager上面的一个资源包, 由 Resource Manager来分配由AM来启动, 在NM上面运行。
整个YarnRunner的运行过程用下面的图来说明一下 (借用网络用图):
1.Client 提交Job Resource Manager接收
2.Resource Manager启动第一个Container--Application Master, 用来管理整个Job 以及后续的资源申请,任务控制
3.Application Master启动后向ASM注册
4.AM计算所需要的资源量, 通过ASM向RM进行申请
5.RM提供所有container的location后, AM去要求NM启动所有的container
6.NM启动container
7.每个任务向AM汇报运行情况与状态
8.Job运行完后AM向ASM注销关闭
分享到:
相关推荐
hadoop本地模式执行依赖的类YARNRunner.java,安全无病毒,放心可使用!
用eclipse本地提交Hadoop任务(如WordCount)到服务器上跑的时候,会报错: Stack trace: ExitCodeException...这是hadoop本身的一个bug,可以通过修改NativeIO和YARNRunner的源码并替换解决。这是这两个.java的zip包。
在本项目中,我们主要关注的是如何在Windows环境下使用Eclipse IDE运行一个WordCount程序,该程序连接到Linux上的Hadoop 2.8集群,并利用NativeIO和YARNRunner进行分布式处理。以下是对这些关键概念的详细解释: 1....
MR(MapReduce)程序提交到客户端所在的节点,由 YarnRunner 运行。这个过程中,YarnRunner 负责将 MR 程序提交到 ResourceManager,以获取资源和执行任务。 2. ResourceManager ResourceManager 是 Yarn 的核心...
YARN的作业提交流程MapReduce程序提交到YarnRunner所在节点YarnRunner向ResourceManager申请一个appliationR
如果作业是提交给YARN运行的,该Cluster对象的代理对象为YarnRunner;如果是本地运行的MapReduce模拟器,代理对象为LocalJobRunner。 2. JobSubmitter通过代理对象向ResourceManager申请提交一个application,...
在编写 MapReduce 程序时,不需要自己开发 MRAppMaster 和 YARNRunner,因为 Hadoop 已经默认提供通用的 YARNRunner 和 MRAppMaster 程序,大部分情况下只需要编写相应的 Map 处理和 Reduce 处理过程的业务程序即可...
【Yarn资源调度器】是Hadoop大数据处理框架的核心组件之一,主要负责集群资源的管理和分配,确保高效、公平地运行各种计算任务。本课程详细介绍了Yarn的基本架构、工作机制、调度器及调度算法,以及如何进行实际操作...
【标题】: Hadoop YARN ...总结来说,YARN通过其独特的架构和调度策略,实现了对集群资源的有效管理和优化,使得Hadoop能够处理更复杂的计算任务,同时支持多种计算框架的并存,是现代大数据处理的关键基础设施之一。
2. YarnRunner 向 RM 申请一个 Application,并获得一个唯一的 application_id。 3. 应用程序将所需的资源(包括 jar 包、配置文件等)提交到 HDFS 的特定目录。 4. MRAppMaster 向 RM 申请运行,并等待 RM 初始化 ...
- YARNRunner接收作业并在某个NodeManager上启动ApplicationMaster。 2. **资源申请与分配** - ApplicationMaster向ResourceManager申请足够的资源来运行MapTasks。 - ResourceManager分配资源后,...
将两个类org.apache.hadoop.io.nativeio.NativeIO.java,org.apache.hadoop.mapred.YARNRunner.java 放到工程的src下,两个类的package不修改,否则覆盖不掉原来的hadoop的那两个类
在YARNRunner.java的源码中,你可能需要修改AM运行命令的设置。在第390行左右,将`Environment.JAVA_HOME.$() + "/bin/java"`更改为`"$JAVA_HOME/bin/java"`,并添加一个方法来处理路径分隔符的替换,确保环境变量在...
1. **获取新的 Job ID**:客户端通过 `YarnRunner` 调用 `getnewjobid()` 方法向 `ResourceManager`(RM)发送提交作业请求。`ResourceManager` 检查作业的输出路径是否已存在,如果存在则抛出异常。 2. **初始化...
1. **获取 Job ID**:客户端通过 `YarnRunner` 类调用 `getNewJobId()` 方法向 `ResourceManager` 发送提交作业请求。`ResourceManager` 检查作业输出路径是否已存在,不存在则初始化存放 Job 相关资源的路径,并...