`
qianshangding
  • 浏览: 124879 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Hadoop之yarn的工作流程

 
阅读更多

yarn通用资源管理框架主要由以下几个部分组成

ResourceManager(RM):Scheduler调度器和ApplicationsManager(ASM:资源管理器)2个组件组成,ResourceManager和每个NodeManager (NM)构成一个资源估算框架,管理协调分配集群中的资源,对在系统中所有应用的资源分配拥有最终最高级别的仲裁权。

ApplicationMaster(AM)用来协调应用程序下Task的运行。它和MapReduce Task都运行在 Container中,这个Container由RM(ResourcesManager)调度(启动/停止)并由NM(NodeManager)管理,并且监控所有Task的运行情况,在任务运行失败时,重新为任务申请资源以启动任务。
注:MRAppMaster是mapreduce的ApplicationMaster实现)


Nodemanager(NM):用来启动和监控本地计算机资源单位Container的利用情况,是每个节点上的资源和任务管理器,定时地向RM汇报本节点上的资源使用情况和各个Container的运行状态,并且接受并处理来自AM的Container启动/停止等请求。

Container
:Container是yarn资源的抽象,它封装了某个节点上的多维度资源(内存,cpu,磁盘,网络等),当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的。yarn会为每个任务分配一个Container,且该任务只能使用该Container描述的资源,它是一个动态资源划分单位,是根据应用程序的需求动态生成的。(目前yarn只支持cpu和内存2种资源)


来源:http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/YARN.html

1:用户向YARN中提交JOB,当在配置文件中设置mapreduce.framework.name为yarn时候,MapReduce2.0继承接口ClientProtocol的模式就激活了RM会生成新的Job ID(即Application ID),接着Client计算输入分片,拷贝资源(包括Job JAR文件、配置文件,分片信息)到HDFS,最后用submitApplication函数提交JOB给RM。

获取新的JobID源码(org.apache.hadoop.mapred.YARNRunner)

  @Override
  public JobID getNewJobID() throws IOException, InterruptedException {
    return resMgrDelegate.getNewJobID();
  }

submitApplication提交应用程序源码(org.apache.hadoop.mapred.YARNRunner):

@Override
  public JobStatus submitJob(JobID jobId, String jobSubmitDir, Credentials ts)
  throws IOException, InterruptedException {
    
    addHistoryToken(ts);
    
    // Construct necessary information to start the MR AM
    ApplicationSubmissionContext appContext =
      createApplicationSubmissionContext(conf, jobSubmitDir, ts);

    // Submit to ResourceManager
    try {
      ApplicationId applicationId =
          resMgrDelegate.submitApplication(appContext);

      ApplicationReport appMaster = resMgrDelegate
          .getApplicationReport(applicationId);
      String diagnostics =
          (appMaster == null ?
              "application report is null" : appMaster.getDiagnostics());
      if (appMaster == null
          || appMaster.getYarnApplicationState() == YarnApplicationState.FAILED
          || appMaster.getYarnApplicationState() == YarnApplicationState.KILLED) {
        throw new IOException("Failed to run job : " +
            diagnostics);
      }
      return clientCache.getClient(jobId).getJobStatus(jobId);
    } catch (YarnException e) {
      throw new IOException(e);
    }
  }
通过Eclipse的Hadoop插件,可以查看应用程序的相关信息:



2:RM接受submitApplication方法提交JOB,则将其请求交给Scheduler调度器处理,Scheduler调度器分配Container,同时RM在NM上分配应用程序第一个Container来启动ApplicationMaster进程,MRAppMatser会初始化一定数量的记录对象(bookkeeping)来跟踪JOB的运行进度, 并收取每个TASK的进度和完成情况,接着MRAppMaster收集计算后的输入分片情况,如果应用程序很小,能在同一个JVM上运行,则用uber模式,下面会讲满足什么情况才采用uber模式。


3:如果不在uber模式下运行,则Application Master会为所有的Map和Reducer task向RM请求Container,所有的请求都通过heartbeat(心跳)传递,心跳也传递其他信息,例如关于map数据本地化的信息,分片所在的主机和机架地址信息,这些信息帮助调度器来做出调度的决策,调度器尽可能遵循数据本地化或者机架本地化的原则分配Container
在Yarn中,例如,用yarn.scheduler.capacity.minimum- allocation-mb设置最小申请资源1G,用yarn.scheduler.capacity.maximum-allocation-mb设置 最大可申请资源10G 这样一个Task申请的资源内存可以灵活的在1G~10G范围内


4:获取到Container后,NM上的Application Master就联系NM启动Container,Task最后被一个叫org.apache.hadoop.mapred.YarnChild的main类执行,不过在此之前各个资源文件已经从分布式缓存拷贝下来,这样才能开始运行map Task或者reduce Task。PS:YarnChild是一个(dedicated)的JVM。


5:当Yarn运行同时,各个Container会报告它的进度和状态给Application Master,客户端会每秒轮询检测Application Master,这样就随时收到更新信息,这些信息可以通过Web UI来查看。


6:客户端每5秒轮询检查Job是否完成,期间需要调用函数Job类下waitForCompletion()方法,Job结束后该方法返回。轮询时间间隔可以用配置文件的属性mapreduce.client.completion.pollinterval来设置


7:应用程序运行完成后, MRAppMaster向ResourceManager 注销并关闭自己。


YARN能够调度CPU和内存,有些任务使用CPU比较多,有些任务就比较占内存,所以要根据任务的特点合理的利用计算机资源。

分享到:
评论

相关推荐

    hadoop_yarn讲解ppt

    本ppt主要讲解yarn的基本架构,工作流程,基础库以及程序设计方法 容错等

    Hadoop Yarn详解

    讲述Hadoop Yarn体系架构及其应用,以及在使用过程中的应用

    yarn-hazelcast:用于Hazelcast的Hadoop YARN集成

    这是对Apache YARN分布式外壳程序源代码的修改,以简化Hazelcast群集设置过程并利用惊人的YARN资源协商功能。 所需的只是Hazelcast zip文件(在进行必要的配置修改之后)。 它在提供的数量的群集节点上启动Hazelcast...

    hadoop-管理

    6.完全重启整个集群的过程 首先是用root权限关闭所有节点的防火墙,/etc/init.d/iptables stop 然后启动hadoop集群 来到hadoop的安装路径执行: ./start-all.sh 待到集群全部成功启动之后两分钟之后执行关闭hadoop...

    新版Hadoop视频教程 段海涛老师Hadoop八天完全攻克Hadoop视频教程 Hadoop开发

    09-yarn的job提交流程.avi 第四天 常见mr算法实现和shuffle的机制 01-复习.avi 02-hadoop中的序列化机制.avi 03-流量求和mr程序开发.avi 04-hadoop的自定义排序实现.avi 05-mr程序中自定义分组的实现.avi ...

    小白快速掌握Hadoop集成Kerberos安全技术频教程

    手把手视频详细讲解项目开发全过程,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 课程简介 从零学习Kerberos安全认证机制,并和Hadoop、YARN、HIVE进行集成,通过知识点 + 案例教学法帮助小白快速掌握...

    hadoop2.x集群搭建.txt(hdfs和yarn貌似正常,但mapreduce 提交job执行失败,请看我的另一个资源,另一个搭建是成功的)

    hadoop 搭建过程

    Hadoop技术内幕:深入解析YARN架构设计与实现原理

    全书共四部分13 章:第一部分(第1~2 章)主要介绍了如何获取、阅读和调试Hadoop 的源代码,以及YARN 的设计思想、基本架构和工作流程;第二部分(第3~7 章)结合源代码详细剖析和讲解了YARN 的第三方开源库、底层...

    CDH搭建hadoop流程.doc

    使用CDH搭建hadoop集群,yarn集群,内附详细搭建流程,并记录了里面踩过的一些坑。

    job提交yarn平台过程.png

    job提交yarn平台过程.png,描述的是hadoop 作业提交过程

    Hadoop任务调度器

    Hadoop任务调度器 基础知识 • Hadoop调度流程 • Hadoop自带调度器介绍 • 编写自己的Hadoop调度器 • 总结

    Hadoop-2.8.0分布式安装手册

     本文的目的是为当前最新版本的Hadoop 2.8.0提供最为详细的安装说明,以帮助减少安装过程中遇到的困难,并对一些错误原因进行说明,hdfs配置使用基于QJM(Quorum Journal Manager)的HA。本文的安装只涉及了hadoop-...

    hadoop笔记

    Hadoop架构分析之集群结构分析,Hadoop架构分析之HDFS架构分析,Hadoop架构分析之NN和DN原生文档解读,Hadoop MapReduce原理之流程图.Hadoop MapReduce原理之核心类Job和ResourceManager解读.Hadoop MapReduce原理之...

    hadoop-3.1.1.3.1.4.0-315.tar.gz

    ambari-2.7.5 编译过程中四个大包下载很慢,所以需要提前下载,包含:hbase-2.0.2.3.1.4.0-315-bin.tar.gz ,hadoop-3.1.1.3.1.4.0-315.tar.gz , grafana-6.4.2.linux-amd64.tar.gz ,phoenix-5.0.0.3.1.4.0-315....

    IT十八掌_Hadoop阶段学习笔记(课堂笔记与源码流程)

    Hadoop架构分析之集群结构分析,Hadoop架构分析之HDFS架构分析,Hadoop架构分析之NN和DN原生文档解读,Hadoop MapReduce原理之流程图.Hadoop MapReduce原理之核心类Job和ResourceManager解读.Hadoop MapReduce原理之...

    guagua:Hadoop MapReduce和Hadoop YARN的迭代计算框架

    瓜瓜瓜Hadoop MapReduce和Hadoop YARN上的迭代计算框架。消息Guagua 0.7.7发布了很多改进。 检查我们的会议入门请访问以获取教程。什么是瓜瓜瓜? Shifu的子项目Guagua是一个基于Hadoop MapReduce和YARN的分布式,可...

    hadoop段海涛老师八天实战视频

    09-yarn的job提交流程.avi 第四天 常见mr算法实现和shuffle的机制 01-复习.avi 02-hadoop中的序列化机制.avi 03-流量求和mr程序开发.avi 04-hadoop的自定义排序实现.avi 05-mr程序中自定义分组的实现.avi

    IT十八掌_Hadoop阶段PPT(原理图与要点解析)

    Hadoop架构分析之集群结构分析,Hadoop架构分析之HDFS架构分析,Hadoop架构分析之NN和DN原生文档解读,Hadoop MapReduce原理之流程图.Hadoop MapReduce原理之核心类Job和ResourceManager解读.Hadoop MapReduce原理之...

    精品课程推荐 大数据与云计算教程课件 优质大数据课程 03.Hadoop YARN(共25页).pptx

    大数据与云计算教程课件 优质大数据课程 03.Hadoop YARN(共25页).pptx 大数据与云计算教程课件 优质大数据课程 04.MapReduce Eclipse开发插件(共20页).pptx 大数据与云计算教程课件 优质大数据课程 05.Hadoop...

    YARN.xmind

    大主题:背景、YARN框架、YARN工作流程、对比分析、YARN的功能;此为思维导图由本人自己通过学习总结的,其中有参考林子雨教授的《大数据技术原理与应用》、湖南科技职业学院人工智能大数据教研组《分布式系统hadoop...

Global site tag (gtag.js) - Google Analytics