YARN-MapReduce的作业提交流程

YARN分布式资源管理系统

组成:

  ResourceManagerYARN的资源管理器,主节点,通过NodeManager管理集群中所有的资源

  NodeManager:YARN的节点管理器,从节点,通过container管理资源,一个dataNode对应一个NodeManager

  Container:包装资源,CPU/内存/IO

  容器:最小的资源单位,1GB内存,一个虚拟核心

  Master:协调MapReduce作业中任务的运行

Application Master和MapReduce任务运行于容器中,这些容器由ResourceManager调度,由nodemanager管理

yarn工作流程

  1.client端向ResourceManager提交应用程序, 也就是client端会将 jar包,配置文件,切片等数据上传到hdfs上的某路径下;
  2. resourceManager将此应用程序添加到任务队列中;
  3. 等待资源充沛时, resourceManager为该应用程序分配第一个container,在这个container中启动应用程序的ApplicationMaster;
  4. ApplicationMaster首先向ResourceManager注册,用户可以直接通过ResourceManager查看应用程序的运行状态, 还会进行分片等工作, 之后向ResourceManager申请运行任务所需的资源;
  5. ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源, 发送命令让NodeManager创建container, 之后执行task;
  6. ApplicationMaster监控job执行作业, 必要时候进行容错处理, 直到ApplicationMaster检测到job完成后, 向ResourceManager通知, 注销自己

作业提交流程

  1.取号,向resourcemanager申请一个新的application ID,用于MapReduce作业的ID
  2.检查作业的输出,如果没有指定输出或者路径已经存在(路径存在时会覆盖),则不提交作业,并且抛出异常
  3.检查作业的输入并计算输入切片,如果不能计算切片(如:输入路径不存在等),不提交作业,抛出异常
  4.拷贝jar包,配置文件,计算好的切片到共享文件系统的以作业ID命名的目录中,作业的jar包默认副本数量为10,nademanager如果运行作业中的任务时,会有很多副本可以访问
  5.调用resourcemanager的submitApplication方法提交作业
  6.resourcemanager挑选一台NodeManager,该NodeManager分配容器(Container)并在此容器上启动application master进程,读取客户端上传的资源,并计算需要多少map任务和reduce任务,向resourceManager为map任务申请资源
reduce任务可以运行于集群中的任意位置,而map任务会有本地读取数据的限制。
  7.当map任务的完成度达到百分之五的时候,再向resourceManager为reduce任务申请资源
  8.所有的reduce任务运行完成之后,MRAppMaster会通知客户端作业完成。

 

原文地址:https://www.cnblogs.com/hhz-97/p/12104404.html