zoukankan      html  css  js  c++  java
  • 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会通知客户端作业完成。

     

  • 相关阅读:
    vue 报错./lib/html5-entities.js, this relative module was not found
    vuex 实现vue中多个组件之间数据同步以及数据共享。
    vue 使用Slot 分发内容 学习总结。
    pyftplib中文乱码问题
    Django对postgresql数据库进行分组聚合查询
    ubuntu16.04 一键安装nginx-rtmp
    python处理RSTP视频流
    百度人脸注册/搜索测试
    任何情况下,服务端都不能报500错误
    Django自定义指令+mq消息队列的使用
  • 原文地址:https://www.cnblogs.com/hhz-97/p/12104404.html
Copyright © 2011-2022 走看看