Hadoop 三剑客之 —— 集群资源管理器 YARN

一、hadoop yarn 简介

Apache YARN (Yet Another Resource Negotiator) 是hadoop 2.0 引入的集群资源管理系统。用户可以将各种服务框架部署在YARN上,由YARN进行统一地管理和资源分配。

二、YARN架构

1. ResourceManager

ResourceManager通常在独立的机器上以后台进程的形式运行,它是整个集群资源的主要协调者和管理者。ResourceManager负责给用户提交的所有应用程序分配资源,它根据应用程序优先级、队列容量、ACLs、数据位置等信息,做出决策,然后以共享的、安全的、多租户的方式制定分配策略,调度集群资源。

2. NodeManager

NodeManager是YARN集群中的每个具体节点的管理者。主要负责该节点内所有容器的生命周期的管理,监视资源和跟踪节点健康。具体如下:

  • 启动时向ResourceManager注册并定时发送心跳消息,等待ResourceManager的指令;
  • 维护Container的生命周期,监控Container的资源使用情况;
  • 管理任务运行时的相关依赖,根据ApplicationMaster的需要,在启动Container之前将需要的程序及其依赖拷贝到本地。

3. ApplicationMaster

在用户提交一个应用程序时,YARN会启动一个轻量级的进程ApplicationMasterApplicationMaster负责协调来自 ResourceManager的资源,并通过NodeManager 监视容器内资源的使用情况,同时还负责任务的监控与容错。具体如下:

  • 根据应用的运行状态来决定动态计算资源需求;
  • ResourceManager申请资源,监控申请的资源的使用情况;
  • 跟踪任务状态和进度,报告资源的使用情况和应用的进度信息;
  • 负责任务的容错。

4. Contain

Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。当AM向RM申请资源时,RM为AM返回的资源是用Container表示的。YARN会为每个任务分配一个Container,该任务只能使用该Container中描述的资源。ApplicationMaster可在Container内运行任何类型的任务。例如,MapReduce ApplicationMaster请求一个容器来启动 map 或 reduce 任务,而Giraph ApplicationMaster请求一个容器来运行 Giraph 任务。

三、YARN工作原理简述

  1. Client提交作业到YARN上;
  2. Resource Manager选择一个Node Manager,启动一个Container并运行Application Master实例;
  3. Application Master根据实际需要向Resource Manager请求更多的Container资源(如果作业很小, 应用管理器会选择在其自己的JVM中运行任务);
  4. Application Master通过获取到的Container资源执行分布式计算。

四、YARN工作原理详述

1. 作业提交

client调用job.waitForCompletion方法,向整个集群提交MapReduce作业 (第1步) 。新的作业ID(应用ID)由资源管理器分配(第2步)。作业的client核实作业的输出, 计算输入的split, 将作业的资源(包括Jar包,配置文件, split信息)拷贝给HDFS(第3步)。 最后, 通过调用资源管理器的submitApplication()来提交作业(第4步)。

2. 作业初始化

当资源管理器收到submitApplciation()的请求时, 就将该请求发给调度器(scheduler), 调度器分配container, 然后资源管理器在该container内启动应用管理器进程, 由节点管理器监控(第5步)。

MapReduce作业的应用管理器是一个主类为MRAppMaster的Java应用,其通过创造一些bookkeeping对象来监控作业的进度, 得到任务的进度和完成报告(第6步)。然后其通过分布式文件系统得到由客户端计算好的输入split(第7步),然后为每个输入split创建一个map任务, 根据mapreduce.job.reduces创建reduce任务对象。

3. 任务分配

如果作业很小, 应用管理器会选择在其自己的JVM中运行任务。

如果不是小作业, 那么应用管理器向资源管理器请求container来运行所有的map和reduce任务(第8步)。这些请求是通过心跳来传输的, 包括每个map任务的数据位置,比如存放输入split的主机名和机架(rack),调度器利用这些信息来调度任务,尽量将任务分配给存储数据的节点, 或者分配给和存放输入split的节点相同机架的节点。

4. 任务运行

当一个任务由资源管理器的调度器分配给一个container后,应用管理器通过联系节点管理器来启动container(第9步)。任务由一个主类为YarnChild的Java应用执行, 在运行任务之前首先本地化任务需要的资源,比如作业配置,JAR文件, 以及分布式缓存的所有文件(第10步。 最后, 运行map或reduce任务(第11步)。

YarnChild运行在一个专用的JVM中, 但是YARN不支持JVM重用。

5. 进度和状态更新

YARN中的任务将其进度和状态(包括counter)返回给应用管理器, 客户端每秒(通mapreduce.client.progressmonitor.pollinterval设置)向应用管理器请求进度更新, 展示给用户。

6. 作业完成

除了向应用管理器请求作业进度外, 客户端每5分钟都会通过调用waitForCompletion()来检查作业是否完成,时间间隔可以通过mapreduce.client.completion.pollinterval来设置。作业完成之后, 应用管理器和container会清理工作状态, OutputCommiter的作业清理方法也会被调用。作业的信息会被作业历史服务器存储以备之后用户核查。

五、提交作业到YARN上运行

这里以提交Hadoop Examples中计算Pi的MApReduce程序为例,相关Jar包在Hadoop安装目录的share/hadoop/mapreduce目录下:

# 提交格式: hadoop jar jar包路径 主类名称 主类参数
# hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.15.2.jar pi 3 3

参考资料

  1. 初步掌握Yarn的架构及原理
  2. Apache Hadoop 2.9.2 > Apache Hadoop YARN

更多大数据系列文章可以参见个人 GitHub 开源项目: 大数据入门指南

原文地址:https://www.cnblogs.com/danrenying/p/11108562.html

时间: 2024-08-02 00:04:52

Hadoop 三剑客之 —— 集群资源管理器 YARN的相关文章

Hadoop 系列(二)—— 集群资源管理器 YARN

一.hadoop yarn 简介 Apache YARN (Yet Another Resource Negotiator) 是 hadoop 2.0 引入的集群资源管理系统.用户可以将各种服务框架部署在 YARN 上,由 YARN 进行统一地管理和资源分配. <div align="center"> <img width="600px" src="https://raw.githubusercontent.com/heibaiying/

实时计算平台中的弹性集群资源管理

本文系微博运维数据平台(DIP)在实时计算平台的研发过程中集群资源管理方面的一些经验总结和运用,主要关注以下几个问题: 异构资源如何整合? 实时计算应用之间的物理资源如何隔离? 集群资源利用率如何提高? 集群运维成本如何降低? 1. 背景 这是我们初期的一个实时计算架构,大致划分为三个部分: (1)日志收集: 使用Rsynlog.Flume.Scribe汇聚各个业务方发送过来的日志数据:如果条件允许,业务方也可以直接将数据写入Kafka. (2)日志传输: 使用Kafka作为日志收集组件与实时应

集群资源管理与调度概要

背景知识: 很多互联网公司会有各种类型的工作任务,比如对外提供各种服务,内部的挖掘与数据管理系统. 即使内部数据系统也可能需要多种不同类型的计算系统:适应实时计算的挖掘系统.适合交互查询的系统 或者典型的批处理任务,面对多种各具特性的计算系统与框架,比较传统的资源管理方式采用的是静态资源划分方法. 静态划分优点:简单,固定的硬件资源给固定的计算框架使用,各个框架各行其是,互补干扰. 缺点:整体资源利用率不高,经常出现集群计算系统资源不足 所以需要动态的集群资源管理与调度,这方面的研究呢处于摸索期

Spark的集群管理器

上篇文章谈到Driver节点和Executor节点,但是如果想要运行Driver节点和Executor节点,就不能不说spark的集群管理器.spark的集群管理器大致有三种,一种是自带的standalone独立集群管理器,一种是依赖于Hadoop的资源调度器YARN,还有一种就是Apache项目的Mesos集群管理器. Spark 依赖于集群管理器来启动Executor节点,有时候也会依赖集群管理器来启动Driver节点.集群管理器是 Spark 中的可插拔式组件. 在集群管理器中有着主节点(

Spark集群管理器介绍

Spark可以运行在各种集群管理器上,并通过集群管理器访问集群中的其他机器.Spark主要有三种集群管理器,如果只是想让spark运行起来,可以采用spark自带的独立集群管理器,采用独立部署的模式:如果是想让Spark部署在其他集群上,各应用共享集群的话,可以采取两种集群管理器:Hadoop Yarn 或 Apache Mesos. 一.独立集群管理器 Spark独立集群管理器提供的在集群上运行应用的简单方法.要使用集群启动脚本,按照以下步骤执行即可:1.将编译好的Spark发送到集群的其他节

大数据高可用集群环境安装与配置(06)——安装Hadoop高可用集群

下载Hadoop安装包 登录 https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/ 镜像站,找到我们要安装的版本,点击进去复制下载链接 安装Hadoop时要注意版本与后续安装的HBase.Spark等相关组件的兼容,不要安装了不匹配的版本,而导致某些组件需要重装 输入命令进行安装操作 cd /usr/local/src/ wget https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/

Hadoop+Hbase分布式集群架构“完全篇

1.认识Hadoop和Hbase 1.1 hadoop简单介绍 Hadoop是一个使用java编写的Apache开放源代码框架,它允许使用简单的编程模型跨大型计算机的大型数据集进行分布式处理.Hadoop框架工作的应用程序可以在跨计算机群集提供分布式存储和计算的环境中工作.Hadoop旨在从单一服务器扩展到数千台机器,每台机器都提供本地计算和存储. 1.2 Hadoop架构 Hadoop框架包括以下四个模块: Hadoop Common:这些是其他Hadoop模块所需的Java库和实用程序.这些

Hadoop1.1 和Hadoop 2.4 集群安装版

目录 1 环境准备... 4 1.1 硬件配置... 4 1.2 软件... 4 1.3 网络拓扑结构... 4 1.4 系统分区... 5 1.5 虚拟机配置... 5 1.6 SSH免密码登录... 5 1.7 JDK安装... 7 2 Hadoop1.2.1安装及配置... 8 2.1 下载Hadoop安装介质... 8 2.2 解压Hadoop安装介质... 9 2.3 Hadoop配置文件... 9 2.4 复制Hadoop安装介质... 10 2.5 配置HADOOP_HOME. 1

通过tarball形式安装HBASE Cluster(CDH5.0.2)——配置分布式集群中的YARN ResourceManager 的HA

<?xml version="1.0"?> <!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses