zoukankan      html  css  js  c++  java
  • Hadoop_YARN框架

    Hadoop学习笔记总结

    01. YARN框架

    1. 新一代的框架介绍

    YARN的职能就是将资源调度和任务调度分开。资源管理器ResourceManager全局管理所有应用程序计算资源的分配,每一个job的ApplicationMaster负责相应任务的调度和协调。

    • ResourceManager做的事情是负责协调集群上计算资源的分配。调度、启动每一个 Job 所属的 ApplicationMaster、另外监控 ApplicationMaster 的存在情况。
    • NodeManager 功能比较专一,根据要求启动和监视集群中机器的计算容器container。负责 Container 状态的维护,并向 RM 保持心跳汇报该节点资源使用情况。
    • ApplicationMaster 负责一个 Job 生命周期内的所有工作。注意每一个Job都有一个 ApplicationMaster。它和MapReduce任务一样在容器中运行。AM通过与RM交互获取资源,然后然后通过与NM交互,启动计算任务。
    • 容器是由ResourceManager进行统一管理和分配的。有两类container:一类是AM运行需要的container;另一类是AP为执行任务向RM申请的。
    1. YARN的作用:资源调度。
      ResourceManager------NodeManager
      主节点 ---------- 从节点
    2. ApplicationMaster作用:任务调度
      MRAppMaster ------ yarnchild
      动态产生 ------ 动态产生(可以是Map,可以是Reduce)

    YARN中提交job的详细流程

    不是完全正确,下面是一些解释和更正:

    1. RunJar里面的Conf的配置引用决定了是在本地还是集群运行。是提交到集群yarn_provider还是本地运行local_provider。配置conf决定了是访问远程rpc还是本地rpc。
    2. 步骤2中的staging_dir存放的是作业Jar、配置信息和分片信息;这个staging_dir默认是在HDFS上。
    3. 步骤5是ResourceManager将任务添加到任务队列中。然后,ResourceManager将随机挑选一个NodeManager管理下的Container分配给ApplicationMaster进程,作为MRAppMaster任务调度中心。
    4. MRAppMaster会对作业初始化,接受任务的进度和完成报告;接受HDFS中存放的客户端计算的输入分片信息,对每一个分片创建一个map任务对象和由mapreduce.job.reduces确定的reduce对象。
    5. ApplicationMaster会为该作业所有的map和reduce任务向ResourceManager请求容器(包括内存资源和CPU资源);附着心跳信息的请求包括map任务的本地化信息,如输入分片所在的主机和机架信息。ResourceManager根据这些信息完成分配决策,理想情况会将任务分配给数据本地化的节点。
    6. ResourceManager为任务分配了容器后,ApplicationMaster就通过节点间通信来启动NodeManager中的容器,任务由容器中的YarnChild应用程序执行。在任务执行前,容器将任务需要的资源本地化,包括staging_dir中的作业Jar、配置和文件资源。
    7. ApplicationMaster负责启动map和reduce任务,监控。并在所有任务完成后,向ResourceManager注销自己,清理工作状态。
    8. 在实际运行中,NodeManager节点会随机被指定MRAppMaster进程,然后在任务节点出现yarnChild进程。yarnChild进程执行完map或reduce任务后会消失,MRAppMaster进程执行完这个job后会消失。

    2. YARN框架的通用性

    资源管理框架ResourceManager可以为MapReduce、Spark、Storm等计算框架实现资源调度。但是这些计算框架需要实现一个接口,AppMaster;资源管理器才能启动这个AppMaster执行计算任务。
    比如只需要MR实现MRAppMaster,Spark也需要实现SparkAppMaster

    3. YARN提交job的源码流程

    4. YARN的HA

    Yarn的Ha只能保证,在一个节点失效时,另一台能提供服务。但是不能像HDFS一样智能。Application在执行一半时ResourceManager宕机,另一个ResourceManager不能继续提供任务的执行服务,因为中间数据太多,Hadoop未实现这种任务调度的切换。而HDFS的HA可以保证杀掉active状态的NameNode,文件依然能够上传成功。

  • 相关阅读:
    vue之父子组件间通信实例讲解(props、$ref、$emit)
    jsp的内置对象
    一道关于类加载顺序的面试题
    web.xml中的load-on-startup
    静态代理、JDK动态代理和CGLib动态代理之前的区别
    有关于tomcat启动时,利用listener来执行某个方法
    有关于注解
    java 代码块,静态代码块,构造器等的执行顺序
    java容器的理解(collection)
    PHP常用的缓存技术汇总
  • 原文地址:https://www.cnblogs.com/yulei126/p/6777300.html
Copyright © 2011-2022 走看看