[关闭]
@zhangyy 2020-10-01T14:56:45.000000Z 字数 2806 阅读 173

大数据运维组件YARN体系结构

大数据运维系列



一:YARN分布式资源调度平台-特性&业界使用

  1. 1.高可靠
  2. 当应用基于YARN运行的应用程序失败时可以自动拉起
  3. 2.可扩展性
  4. 可以通过简单的增加服务器数达到增加资源的目的
  5. 3.并行性
  6. 可以同时运行大量任务
  7. 4. 平台型
  8. 可以同时支撑多种类型的应用程序运行
  9. 5.大规模
  10. 可以支持成千上万节点协同计算

image_1ejh19l7r18341evu1bdi10hjmh09.png-200.8kB

image_1ejh19v5jvaeuic1fcf1bom1eg7m.png-161.7kB

二:YARN体系结构、原理、运行机制(1)- 简介

image_1ejh1sm1i1ukvu02oef1gfl1dkr1g.png-267.3kB

image_1ejh1t4gd1ot71enp1asuqu1124j20.png-162kB

  1. ResourceManagerRM)
  2. 全局的资源管理器,负责整个系统的资源管理和分配,它带了FIFOCapacity ScheduleFair Schedule三种常用调度器
  3. NodeManagerNM
  4. 每个节点上的资源和任务管理器,定时地向RM汇报本节点上
  5. 的资源以及使用情况和各个Container的运行状态,接收并处理来自AM
  6. Container启动/停止等各种请求。
  7. ApplicationMasterAM
  8. 用户提交的每个应用程序均包含一个AM,它与RM调度器协商以获取
  9. 资源分配给内部的任务;与NM通信以启动/停止任务;监控所有任务运行
  10. 状态,并在任务运行失败时重新为任务申请资源以重启任务。
  11. Container
  12. YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、
  13. CPU等,当AMRM申请资源时,RMAM返回的资源便是用Container
  14. 表示的。YARN会为每个任务分配一个Container,且该任务只能使用该
  15. Container中描述的资源

三:YARN体系结构、原理、运行机制(2)- 作业提交流程

image_1ejh24r12f9v1fqvhdb1pgv1d792d.png-223.4kB

  1. 1)作业提交
  2. client调用job.waitForCompletion方法,向整个集群提交MapReduce作业 (第1步) 新的作业ID(应用ID)由资源管理器分配(第2步). 作业的client核实作业的输出, 计算输入的split,将作业的资源(包括Jar包, 配置文件, split信息)拷贝给HDFS(第3步). 最后, 通过调用资源管理器的submitApplication()来提交作业(第4步).
  3. 2)作业初始化
  4. 当资源管理器收到submitApplication()的请求时, 就将该请求发给调度器(scheduler), 调度器分配container, 然后资源管理器在该container内启动应用管理器进程, 由节点管理器监控(第5a5b步)。
  5. MapReduce作业的应用管理器是一个主类为MRAppMasterJava应用。其通过创造一些bookkeeping对象来监控作业的进度, 得到任务的进度和完成报告(第6步)。然后其通过分布式文件系统得到由客户端计算好的输入split(第7步)。然后为每个输入split创建一个map任务, 根据mapreduce.job.reduces创建reduce任务对象。
  6. 3)任务分配
  7. 如果作业很小,应用管理器会选择在其自己的JVM中运行任务。如果不是小作业, 那么应用管理器向资源管理器请求container来运行所有的mapreduce任务(第8步). 这些请求是通过心跳来传输的, 包括每个map任务的数据位置, 比如存放输入split的主机名和机架(rack). 调度器利用这些信息来调度任务, 尽量将任务分配给存储数据的节点, 或者退而分配给和存放输入split的节点相同机架的节点.
  8. 4)任务运行
  9. 当一个任务由资源管理器的调度分配给一个container后, 应用管理器通过联系节点管理器来启动container(第9a步和9b步). 任务由一个主类为YarnChildJava应用执行. 在运行任务之前首先本地化任务需要的资源, 比如作业配置, JAR文件, 以及分布式缓存的所有文件(第10步). 最后, 运行mapreduce任务(第11步).
  10. YarnChild运行在一个专用的JVM中, 但是YARN不支持JVM重用.
  11. 5)进度和状态更新
  12.   YARN中的任务将其进度和状态(包括counter)返回给应用管理器,客户端每秒(通过mapreduce.client.progressmonitor.pollinterval设置)向应用管理器请求进度更新,展示给用户。
  13. 6)作业完成
  14. 除了向应用管理器请求作业进度外,客户端每5分钟都会通过调用waitForCompletion()来检查作业是否完成。时间间隔可以通过mapreduce.client.completion. pollinterval来设置。作业完成之后, 应用管理器和container会清理工作状态, OutputCommiter的作业清理方法也会被调用。作业的信息会被作业历史服务器存储以备之后用户核查。

四:YARN体系结构、原理、运行机制(3)- 高可用

image_1ejh27f8u10qbin41agmt3s90j2q.png-659.9kB

五:YARN体系结构、原理、运行机制(4)- 分布式缓存

image_1ejh3bkpf375k121fh81epq1id937.png-377.7kB

  1. 步骤1客户端将应用程序所需的文件资源(外部字典、JAR包、二进制文件等)提交到HDFS上。
  2. 步骤2客户端将应用程序提交到ResourceManager上。
  3. 步骤3 ResourceManager与某个NodeManager通信,启动应用程序ApplicationMaster,NodeManager收到命令后,首先从HDFS下载文件
  4. (缓存),然后启动ApplicationMastero
  5. 步骤4 ApplicationMasterResourceManage:通信,以请求和获取计算资源。
  6. 步骤5 ApplicationMaster收到新分配的计算资源后,与对应的NodeManager通信,以启动任务。
  7. 步骤6如果该应用程序第一次在该节点上启动任务,则NodeManager首先从HDFS上下载文件缓存到本地,然后启动任务。
  8. 步骤7 NodeManager后续收到启动任务请求后,如果文件以在本地缓存,则直接运行任务,否则等待文件缓存完成后再启动。
  9. 各节点上的缓存文件由对应的NodeManager管理和维护。考虑到磁盘空间的有限性,NodeManager采用了一定的缓存置换算法定期清理
  10. 失效文件。

六:YARN体系结构、原理、运行机制(5)- 资源调度器

image_1ejh4ikbuucir4k11rn8rf1e7n3k.png-30kB

image_1ejh4iv868uv1ahi7e81am21efr41.png-34.7kB

image_1ejh4j9iv497hr01rvn1is14e.png-31.5kB

image_1ejh4jliafbuj751eag1mvk1d204r.png-46.6kB

image_1ejh4k1hr8g81s7e1qgd1a2bm8c58.png-186.7kB

七:YARN资源调度器-实践

image_1ejh4mgmhblq3n6lte12qat2o62.png-649.9kB

八:YARN核心运维

  1. 组件安装规划、CPU、内存规划
  2. 产线环境高可用配置、集群部署、resourcemanager/nodemanager集群服务启动、服务验证、日志跟踪
  3. resourcemanager主备切换、nodemanager上线服役、nodemanager下线退役
  4. 调度器设置、资源队列配置
  5. 核心指标监控
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注