`

job运行流程(4)---NodeManager运行CONTAINER

 
阅读更多

16、接着上篇文章LocalizationEventType.INIT_CONTAINER_RESOURCES事件被触发,对应ResourceLocalizationService.handle()被执行,分别会创建public、private、application三种资源对应的LocalResourcesTrackerImpl服务,接着LocalResourcesTrackerImpl.handle()被执行

17、然后对应LocalizedResource.handle(ResourceRequestEvent.REQUEST)会被调度执行,用来完成ResourceState状态的转换;

18、进而触发LocalizerTracker.handle()执行,这里会直接触发public和private属性的resource下载,具体就是从hdfs上下载job.xml/job.jar等运行时需要的文件;这里对于所有public资源下载,所有container的资源下载都是由同一个LocalResourcesTracker处理,而私有资源的下载是由一个map维护,key为username,value为对应LocalResourcesTracker,从而实现公有资源所有用户共享,而私有资源是本人可用,不管公有资源还是私有资源下载到本地后,在Nodemanager启动、ResourceLocalizationService初始化时都会将其删除;

 

优化点:增加mapreduce jar包缓存功能,修改job提交客户端,增加指定jar包属性为public的选项,并支持更新jar包,ResourceLocalizationService下载时先判断本地是否已经有匹配版本的jar包,可以通过项目自带的crc校验来完成,本地已有就直接读取无需下载,没有则从hdfs指定的目录下载到本地公共缓存目录,并且修改ResourceLocalizationService初始化逻辑,让其不要删除本地public jar包,然后在Nodemanager启动时删除本地时间比较长的(比如最近2周没有访问)public jar包,同时在historyserver启用定时任务删除hdfs指定目录中时间长(比如最近2周没有访问)的public jar包

 

19、当某个container中的某个资源被下载完成后会触发ResourceLocalizedEvent.LOCALIZED事件,从而触发ContainerImpl.handle(ContainerResourceLocalizedEvent.RESOURCE_LOCALIZED)被执行,而该方法会判断该资源所属的container是否下载完成了所有资源(内部维护了一个pending队列表示待下载的资源列表),如果没有全部完成则等待其它资源下载完成,如果已完成则执行ContainersLauncher.handle(ContainersLauncherEvent.LAUNCH_CONTAINER)方法;

20、ContainerLaunch线程被线程池调度执行,最终调用ContainerLaunch.call方法来运行container,同时会初始化LogDirsHandlerService服务,用来分配本地container日志的写入路径,在container运行时在本地写入container-log,当application运行完成时恢复触发相应的applog事件删除本地log,至此整个job运行流程已经完成;


整体流程如下图所示:

 

 

  • 大小: 138.1 KB
分享到:
评论

相关推荐

    yarn基本运作流程

    4. **Container**:由NodeManager启动的容器,用于运行具体的应用程序任务,如Map或Reduce任务。 #### 三、YARN基本运作流程详解 接下来我们将根据提供的部分内容,深入分析YARN的工作流程。 1. **客户端提交作业...

    mapreduce运行过程(个人见解如有错误希望大神指导).pdf

    8. NodeManager领取Task任务,生成一个container容器,下载job资源到本地,并启动MrAppMaster。 9. MrAppMaster根据提交的文件,确定有多少个切片、每个切片的文件路径以及偏移量,并向ResourceManager申请运行map...

    Yarn框架代码详细分析V0.3.pdf

    - 提供健康检查机制确保容器正常运行。 **2.2.3 MRAppMaster** - **职责:** - 协调MapReduce作业的生命周期管理。 - 请求和管理资源以执行Map和Reduce任务。 - **实现细节:** - 通过与ResourceManager交互...

    我的面试题

    5. **调度与资源分配**:`ResourceManager` 将作业放入调度器,并在找到空闲的 NodeManager 时创建一个 Container 容器,并启动 MRAppMaster。MRAppMaster 根据 `job.split` 文件为每个输入切片创建 Map 任务,并...

    Yarn常见问题维护手册V1.01

    NodeManager 是每个节点上的代理,负责监控和管理该节点的资源,如容器(Container)的生命周期和应用程序的执行。 【日志概述】 在 YARN 中,日志聚合是一项重要功能,它允许用户收集和查看应用程序运行过程中的...

    【Yarn篇01】Yarn工作机制和作业提交流程1

    4. **运行MRAppMaster**:客户端向RM申请运行MRAppMaster,RM将请求转发给合适的NM。 5. **任务初始化**:NM创建Container,下载作业资源,启动MRAppMaster。 6. **任务分配**:MRAppMaster向RM申请MapTask和Reduce...

    Yarn的工作机制.pptx

    RM选择合适的NodeManager(NM)分配Container,NM负责在本地启动容器并下载job资源。然后,YARNChild进程在Container中运行MapTask。 12-13. **ReduceTask执行**:所有MapTask完成后,MRAppMaster向RM申请运行...

    my document

    4. **调度与任务分配**:`ResourceManager` 将作业放入调度器,并寻找空闲的 `NodeManager` 来创建一个 `Container` 容器,并在其中启动 `MRAppMaster`。`MRAppMaster` 根据 `job.split` 文件为每个输入切片创建 Map...

    hadoop2API帮助文档

    - `NodeManager`是每个节点上的代理,负责容器(container)的生命周期管理和资源监控。 4. **Hadoop Common**: - Hadoop Common包含各种通用工具和库,如网络通信、I/O、安全和配置管理等。 - `Configuration`...

    CDH集群常用组件关键参数及修改建议.docx

    - `mapreduce.job.maps.per.node`和`mapreduce.job.reduces.per.node`控制每个节点上并行运行的任务数。 #### 2.2 YARN内存和CPU优化 - 优化内存分配,确保每个任务有足够资源运行,同时避免过度分配导致资源浪费...

    hadoop-API.zip_Hadoop学习_hadoop api

    - `Job`接口:用于配置和提交MapReduce作业,可以设置输入输出格式、分片策略、任务运行参数等。 - `Mapper`和`Reducer`接口:它们分别是Map阶段和Reduce阶段的基础接口,用户需要实现这些接口来定义自己的业务...

    Hadoop新框架Yarn详解.docx

    4. **Container**:Container是YARN中的资源抽象,它封装了计算资源(如CPU、内存)和网络资源。当AM向RM申请资源时,RM会分配Container,AM再将任务分发到对应的Container中执行。 5. **配置变化**:YARN的配置...

    yarn架构与讲解

    - **NodeManager (NM)**:运行在各个节点上,负责容器(Container)的启动、监控和管理。 - **ApplicationMaster (AM)**:每个应用程序在YARN中运行时的主进程,负责与ResourceManager协商获取资源,并与NodeManager...

    大数据开发面试学习指南

    ResourceManager 分配 Container 并通知 NodeManager 启动 ApplicationMaster;ApplicationMaster 向 ResourceManager 申请资源,并与 NodeManager 协同完成任务调度。 - **应用场景**:除了支持 MapReduce,还可以...

    hadoop 源码解析_yarn源码解析

    MR(MapReduce)程序提交到客户端所在的节点,由 YarnRunner 运行。这个过程中,YarnRunner 负责将 MR 程序提交到 ResourceManager,以获取资源和执行任务。 2. ResourceManager ResourceManager 是 Yarn 的核心...

    MapReduce平台优化详解.pdf

    RM负责整个集群的资源管理和调度,NM负责NodeManager的管理,AM负责ApplicationMaster的管理,Container负责Container的管理。 Yarn的运行机制可以分为三个阶段:第一阶段,RM将Job分配给NM;第二阶段,NM将Task...

    YARN框架代码详细分析

    4. NM的资源下载:NodeManager需要从外部获取应用程序运行所需的相关资源,例如JAR文件、配置文件等。 YARN设计了一个新的框架下的软件设计模式,将任务调度和资源管理解耦,使得YARN具有更好的灵活性和扩展性。...

    实验五 MapReduce实验.docx

    接着,MRAppMaster 向 RM(Scheduler)发起资源请求,得到一组供 map/reduce task 运行的 container,然后与 NodeManager 一起对每一个 container 执行一些必要的任务,包括资源本地化等。 在编写 MapReduce 程序时,...

    MapReduce\Yarn架构

    JobClient提交Job的详细流程如下: 1. JobClient获取JobTracker为Job分配的ID后,在HDFS的JobTracker系统目录下为Job创建一个单独的目录,目录名为Job的ID。 2. Job的相关文件(如job.xml、job.jar、job.split等)...

    Yarn框架代码详细分析

    - 多计算模型支持:通过NodeManager和Container模型,YARN能够支持MapReduce以外的更多计算模型,如Spark、Tez等。 - 资源利用率:YARN通过全局资源视图和调度器,更高效地利用集群资源。 - 容错性:YARN在设计上就...

Global site tag (gtag.js) - Google Analytics