zoukankan      html  css  js  c++  java
  • Yarn通信过程

      yarn包括两块,一个是ResourceManager,主要的作用是管理集群上的资源,目前hadoop版本上,管理的只有cpu和内存.
      另外一个叫NodeManager,这上面会跑我们的程序,叫ApplicationMaster,我们的MapReduce在上面的跑的不叫做ApplicationMaster叫MRAppMaster,通常情况下我们会有多个NodeManager,其余上面跑的就是我们MapReduce运行时的作业,MapTask或者ReduceTask,还有一个Client客户端就是我们用户提交代码的地方.

      首先我们自己的代码要提交到ResourceManager,通过ApplicationClientProtocol协议.ApplicationClientProtocol相当于hadoop1中MapReduce提交的ClientProtocol,在hadoop2中就不叫job了,而叫Application,因为在我们在MapReduce中叫job,而在storm中不叫job,叫Topologgy.
      ApplicationClientProtocol的作用是让我们Client通过方法submitApplication()把我们写的MapReduce代码提交上去的.ResourceManager就会分配一个空闲的NodeManager去运行你的ApplicationMaster,对于我们的MapReduce就会在NodeManager上是运行一个MRAppMaster.

      NodeManager的确定:哪个空闲就使用哪一个.
      ApplicationMaster相当于MapReduce的JobTracer,JobTracker在运行的时候需要申请资源来跑自己的Map任务和Reduce任务,所以ApplicationMaster也需要和ResourceManager进行交互.

      ApplicationMaster和ResourceManager是通过协议ApplicationMasterProtocol进行交互的.目的是向ResourceManager申请资源,首先使用方法registerApplicationMaster()注册一下,然后使用方法allocate(AllocateRquest)申请我们要运行Map或者是Reduce的资源.ResourceManager返回结果之后,ApplicationMaster就会和NodeManager通信.
      ApplicationMaster和NodeManager通过协议ContainerManagermentProtocol进行通信.ApplicationMaster申请到资源之后需要在NodeManager上执行startContainers(StartContainersRequest)启动任务,等到任务结束执行stopContainers(StopContainersRequest)关闭NodeManager上的Container,在运行的过程中可以使用getContainerSatatus(GetContainerStatusRequest)监控状态的变化情况.
      NodeManager和ResourceManager也需要通信,使用协议ResourceTrackerProtocal将自身资源状态以心跳的方式发送给ResourceManager.
      ResourceManager用来管理其他NodeManager节点的资源,其他的应用申请的时候,ResourceManager就会把任务分配到那些NodeManager上.
      MRAppMaster和MapTask或ReduceTask之间走的是MapReduce之间通信的协议.
      如果没有应用ResourceTrackProtocal还是活着的,当有应用来的时候,会先走ApplicationClientProtocol协议把代码提交给ResourceManager,ResourceManager分配一个NodeManager去运行ApplicationMaster,这个NodeManager起来之后会去执行ApplicationMasterProtocol,会向ResourceManager申请资源,拿到资源之后使用ContainerManagermentProtocol申请启动一个任务,关闭一个任务.只要NodeManager活着始终使用ResourceTrackProtocol和ResourceManager进行通信,报告自身的状态.

        

  • 相关阅读:
    深入了解C语言
    $_SERVER变量结构
    整理了一份招PHP高级工程师的面试题
    深入探究VC —— 编译器cl.exe(2)【转】http://blog.csdn.net/wangningyu/article/details/4837419
    vs2010 工程设置,调试中的目录问题【转】http://www.cnblogs.com/mlj318/archive/2011/10/09/2203510.html
    深入探究VC —— 链接器link.exe(4)【转】http://blog.csdn.net/wangningyu/article/details/4849452
    移植ffmpeg到VC环境心得 【转】
    深入了解VC++编译器【转】
    VC2010中"Include Directories" 和 "Additional Include Directories"的区别
    深入探究VC —— 资源编译器rc.exe(3)【转】http://blog.csdn.net/wangningyu/article/details/4844687
  • 原文地址:https://www.cnblogs.com/xiaolong1032/p/4769161.html
Copyright © 2011-2022 走看看