Yet Another Resources Negotiator

从Hadoop2.0版本开始引入YARN,主要功能:

  • 集群资源管理系统
  • 负责集群的统一管理和调度
  • 与客户端交互,处理客户端请求

一、基本架构

Master/Slave架构

资源管理和节点管理器组成

集群的机器启动nodemanager进程,一般与HDFS的datanode一一对应

resourcemanager负责机器资源的统一调度,一般不和nodemanager共同运行于一个节点,nodemanager负责节点资源的监控和管理,其所在节点上的资源情况和运行的任务的状态都会通过nodemanager向resourcemanager进行反馈,这种反馈是通过心跳的方式反馈,周期性汇报

resourcemanager负责接收客户端提交的作业请求,是一些计算任务,并不是上传文件,上传文件是上传到namenode

接收到这些任务后,会调度这些任务在集群中运行,在YARN中真正执行任务的是container,container是cpu和内存等计算资源抽象的容器,真实的任务是运行在container中的

resourcemanager调度一个任务的时候首先会和nodemanager进行通信,要求nodemanager启动一个container,container会根据运行的程序封装需要的内存、cpu和网络等资源

启动完container,针对程序还会启动applicationmaster,每个程序都有程序管理器,负责具体任务的资源申请、任务调度和监控。向resourcemanager申请资源,申请到后与nodemanager进行通信,要求nodemanager启动container执行具体任务

任务执行过程中不断与applicationmaster进行通信,汇报任务执行情况和状态、

客户端通过resourcemanager获得applicationmaster的连接信息,与applicatinomaster建立连接,不断与applicationmaster进行通信,获取任务最新的进度信息,直到任务结束,释放占用的资源,container关闭

一般两个resourcemanager,一个active一个standby

二、核心组件

1.ResourceManager

只有一个

功能:

  • 处理客户端请求
  • 启动/监控ApplicationMaster
  • 监控NodeManager健康状态
  • 资源分配和调度

2.NodeManager

在mastermanager之外启动NodeManager,一般与DataNode一一对应

功能:

  • 单个节点上的资源监控和管理
  • 定时向ResourceManager汇报本机的资源使用情况
  • 处理来自ResourceManager的请求,为作业的执行分配Container
  • 处理来自ApplicationMaster的请求,启动和停止Container

3.ApplicationMaster

每个应用程序只有一个,负责应用程序的管理,资源申请和任务调度

功能:

  • 与ResourceManager协商为应用程序申请资源
  • 与NodeManager通信启动/停止任务
  • 监控任务运行状态和失败处理

4.Container

任务运行环境的抽象,只有在分配任务的时候才会抽象出一个container

功能:

  • 任务运行资源(节点、内存、CPU)
  • 任务启动命令
  • 任务运行环境

三、YARN容错

ResourceManager

  • 基于zookeeper实现高可用 启动多个ResourceManager

NodeManager

  • NodeManager故障将导致运行在该节点的任务失败,任务失败后,ResourceManager将失败任务通知对应的ApplicationMaster
  • ApplicationMaster决定如何处理失败的任务

ApplicationMaster

  • ApplictationMaster失败后,由ResourceManager负责重启

四、运行流程

1.客户端向ResourceManager发送提交作业的请求,收到请求后向客户端返回作业ID

2.ResourceManager会找其中的一个nodemanager向它发送请求来分配container,nodemanager启动container,在container中启动一个ApplicatinMaster,ResourceManager会监控这个ApplicationMaster运行状态

ApplicationMaster启动后会计算其负责的作业需要多少个map,多少个reduce,运行这些任务需要多少cpu,多少内存

3.ApplicationMaster向ResourceManager注册,注册成功后开始申请作业运行需要的资源,当resourcemanager将资源分配给ApplicationMaster之后,ApplicationMaster接收到这些资源,信息当中包含这些资源是由哪些nodemanager提供的,

4.ApplicationMaster会和对应的NodeManager进行通信,给nodemanager分配container,要求nodemanager启动container并启动对应的任务

运行在container中的任务会向ApplicatinoMaster运行状态和进度

在运行过程当中,客户端通过ResourceManager获取到ApplicationMaster通信地址,客户端与ApplicationMaster进行通信,周期性的获取到作业运行的状态,因为作业在运行中会周期性向ApplicationMaster进行汇报状态和进度

任务都完成之后,作业就结束了AM会像RM注销,释放掉占用的资源

Hadoop(三)YARN的更多相关文章

  1. Hadoop三种安装模式:单机模式,伪分布式,真正分布式

    Hadoop三种安装模式:单机模式,伪分布式,真正分布式 一 单机模式standalone单 机模式是Hadoop的默认模式.当首次解压Hadoop的源码包时,Hadoop无法了解硬件安装环境,便保守 ...

  2. hadoop(三)

    hadoop(三) 1.对MapReduce的认识   MapReduce是运行在yarn上面的一个分布式运算框架,它是用来解决海量的分布式运算的.对于MapReduce来说,我们可以把它分成两部分来 ...

  3. hadoop之yarn详解(框架进阶篇)

    前面在hadoop之yarn详解(基础架构篇)这篇文章提到了yarn的重要组件有ResourceManager,NodeManager,ApplicationMaster等,以及yarn调度作业的运行 ...

  4. Hadoop三种架构介绍及搭建

    apache  hadoop三种架构介绍(standAlone,伪分布,分布式环境介绍以及安装) hadoop 文档 http://hadoop.apache.org/docs/ 1.StandAlo ...

  5. Hadoop(HDFS,YARN)的HA集群安装

    搭建Hadoop的HDFS HA及YARN HA集群,基于2.7.1版本安装. 安装规划 角色规划 IP/机器名 安装软件 运行进程 namenode1 zdh-240 hadoop NameNode ...

  6. (转)hadoop三个配置文件的参数含义说明

     hadoop三个配置文件的参数含义说明     1       获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配 ...

  7. 3.Hadoop测试Yarn和MapReduce

    Hadoop测试Yarn和MapReduce 1.配置Yarn (1)配置ResourceManager 生产环境中,一般是重开一台机器作为ResourceManager,这里我们以Master机器代 ...

  8. hadoop之yarn(优化篇)

    最近一直在学习hadoop的一些原理和优化,然后也做了一些实践,也有没有去做实践的,反正个人观点都记录下来 一.yarn的介绍 YARN的基本结构由一个ResourceManager与多个NodeMa ...

  9. 三、hadoop、yarn安装配置

    本文hadoop的安装版本为hadoop-2.6.5 关闭防火墙 systemctl stop firewalld 一.安装JDK 1.下载java jdk1.8版本,放在/mnt/sata1目录下, ...

随机推荐

  1. windows 安装 jenkins笔记

    Jenkins 所有镜像列表: http://mirrors.jenkins-ci.org/status.html 可在镜像网站上下载安装文件,比官方下载快些 jenkins 官网地址: https: ...

  2. Spark开发环境搭建和作业提交

    Spark高可用集群搭建 在所有节点上下载或上传spark文件,解压缩安装,建立软连接 配置所有节点spark安装目录下的spark-evn.sh文件 配置slaves 配置spark-default ...

  3. Hands Off for Mac如何卸载?完全卸载Hands Off的方法

    Hands Off for Mac如何卸载?hands off是一款超好用的防火墙软件,在Mac系统上强大且易用,能够控制所有应用的网络连接和文件系统访问,保护我们的隐私数据和系统安全性,如果不需要了 ...

  4. docker监控方案实践(cadvisor+influxdb+grafana)

    一.概要 1.1 背景 虚拟化技术如今已经非常热门,如果你不知道什么是虚拟化,那你应该了解虚拟机.虚拟化技术如同虚拟机一样,用于将某些硬件通过软件方式实现"复制",虚拟出" ...

  5. paper 139:qt超强绘图控件qwt - 安装及配置

    qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式 ...

  6. stm32 单片机

    STM32系列基于专为要求高性能.低成本.低功耗的嵌入式应用专门设计的ARM Cortex-M3内核(ST's product portfolio contains a comprehensive r ...

  7. 78、tensorflow滑动平均模型,用来更新迭代的衰减系数

    ''' Created on 2017年4月21日 @author: weizhen ''' #4.滑动平均模型 import tensorflow as tf #定义一个变量用于计算滑动平均,这个变 ...

  8. client-go获取k8s集群内部连接,实现deployment的增删改查

    一开始写了一个client-java版本的,但是java放在k8s集群上跑需要装jvm而且java的包比较大,client-go版本更适合主机端,下面是整个实现 说明:k8s官方维护的客户端库只有go ...

  9. 【转】开源框架是如何通过JMX来做监控的(一) - JMX简介和Standard MBean

    原文链接:https://www.cnblogs.com/trust-freedom/p/6842332.html#autoid-0-0-0 相信很多做Java开发的同学都使用过JDK自带的 jcon ...

  10. Eclipse转idea改设置

    1 自动导包:画圈的打钩,实现自动导包,去除无用包.导入的类名相同时需要自己手动导包->  alt+enter. 2:修改快捷键 左移光标,右移同理. 上移光标:下移同理 光标移至行首,行末为e ...