• 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会通知客户端作业完成。

     

  • 相关阅读:
    Linux时间同步
    idea中创建多module时,找不到创建class文件问题
    Docker中安装Redis并设置外网可访问
    Docker简介与安装
    RabbitMQ基础篇
    git emoji
    RabbitMQ安装
    ActiveMQ
    消息中间件介绍
    IDEA使用GsonFormat完成JSON和JavaBean之间的转换
  • 原文地址:https://www.cnblogs.com/hhz-97/p/12104404.html
Copyright © 2020-2023  润新知