一、Yarn 产生的背景

Hadoop2 之前是由 HDFS 和 MR 组成的,HDFS 负责存储,MR 负责计算。

一)MRv1 的问题

  • 耦合度高:MR 中的 jobTracker 同时负责资源管理和作业控制两个功能,互相制约。
  • 可靠性差:管理节点是单机的,有单点故障的问题。
  • 资源利用率低:基于 slot 的资源分配模型。机器会将资源划分成若干相同大小的 slot,并划定哪些是 map slot、哪些是 reduce slot。
  • 无法支持多种计算框架:限定了只能用于 MapReduce 程序。

二)Yarn 的诞生

由于之前 Hadoop 资源调度的种种问题,新的资源调度框架产生了 —— YARN(Yet Another Resource Negotiator)。

它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。

二、Yarn 的基本架构

一)Yarn 三大组件

  • ResourceManager
  • Nodemanager
  • ApplicationMaster

Yarn依然是Master/Slave的结构:

  • 在资源架构层面:RM 是 master、NM 是 slave
  • 在应用运行期间:AM 是 master、container 是 slave

1、ResourceManager

ResourceManager 主要由两个组件构成:

调度器( Scheduler)和应用程序管理器(Applications Manager,ASM)。

  • 调度器(Scheduler):

    • 根据容量、队列等限制条件(如每个队列分配一定的资源,最多执行一定数量的作业等),将系统中的资源分配给各个正在运行的应用程序。
  • 应用程序管理器(Applications Manager):
    • 负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源以启动 ApplicationMaster、监控 ApplicationMaster 运行状态并在失败时重新启动等。

2、NodeManager

NodeManager 是每个节点上的资源和任务管理器。

  • 定时地向 RM 汇报本节点上的资源使用情况和各个 Container 的运行状态;
  • 接收并处理来自 AM 的 Container启动/停止等各种请求。

3、ApplicationMaster

ApplicationMaster 是一个任务最先启动的容器,用于管理当前任务的调度。

  • 与 RM 调度器协商以获取资源(用 Container 表示);
  • 将得到的任务进一步分配给内部的任务;
  • 与NM 通信以启动 / 停止任务;
  • 监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

4、Container

不属于 Yarn 三大组件,但是 yarn 中资源的抽象。

  • 封装 NM 上的资源(hadoop2 仅支持 cpu 和内存,hadoop3 扩展网络、硬盘、GPU 等资源);
  • 不同于静态的 slot,container 可以根据需要动态划分。

二)Yarn 通信协议

通信协议共有 5 种如下图所示:

  • 分布式环境下,需要涉及跨机器跨网络通信,YARN底层使用RPC协议实现通信。
  • RPC是远程过程调用(Remote Procedure Call)的缩写形式。基于RPC进行远程调用就像本地调用一样。
  • 在RPC协议中,通信双方有一端是Client,另一端为Server,且Client总是主动连接 Server 的。因此,YARN实际 上采用的是拉式(pull-based) 通信模型。

三、Yarn 工作流程

  1. client 向 YARN 中提交应用程序,其中包括 AM 程序、启动 AM 的命令、用户程序等。
  2. RM 为该应用程序分配第一个 Container,并与对应的 NM 通信,要求它在这个 Container中启动应用程序的 AM。
  3. AM 首先向 RM 注册,这样用户可以直接通过 RM 查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。
  4. AM 通过 RPC 协议向 RM 申请和领取资源。
  5. —旦 AM 申请到资源后,便与对应的 NM 通信,要求它启动任务。
  6. NM 为任务设置好运行环境(包括环境变量、JAR 包、二进制程序等)后,将任务启动命令写到 一个脚本中,并通过运行该脚本启动任务。
  7. 各个任务通过 RPC 协议向 AM 汇报自己的状态和进度,以让 AM 随时掌握各个任务的运行状态,从而可以在任务失政时重新启动任务。在应用程序运行过程中,用户可随时通过 RPC 向 AM 查询应用程序的当前运行状态。
  8. 应用程序运行完成后,AM 向 RM 注销并关闭自己。

【深入浅出 Yarn 架构与实现】1-1 设计理念与基本架构的更多相关文章

  1. hadoop知识点总结(三)YARN设计理念及基本架构

    YARN设计理念与基本架构 1,MRv1的局限性:扩展性差,可靠性差,资源利用率低,无法支持多种计算框架 2,YARN基本设计思想 1)基本框架对比 Hadoop1.0中,JobTracker由资源管 ...

  2. Spring技术内幕:设计理念和整体架构概述(转)

    程序员都很崇拜技术大神,很大一部分是因为他们发现和解决问题的能力,特别是线上出现紧急问题时,总是能够快速定位和解决. 一方面,他们有深厚的技术基础,对应用的技术知其所以然,另一方面,在采坑的过程中不断 ...

  3. 【转帖】Spark设计理念与基本架构

    Spark设计理念与基本架构 https://www.cnblogs.com/swordfall/p/9280006.html 1.基本概念 Spark中的一些概念: RDD(resillient d ...

  4. 朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招

    朱晔的互联网架构实践心得S2E6:浅谈高并发架构设计的16招 概览 标题中的高并发架构设计是指设计一套比较合适的架构来应对请求.并发量很大的系统,使系统的稳定性.响应时间符合预期并且能在极端的情况下自 ...

  5. 【高并发架构】Redis缓存高并发之-主从架构

    Redis主从架构 到目前为止,Redis Cluster 能实现很好的性能,但如果只是缓存几个G的数据,那么单机Redis就足够了,但缓存主要用来读的,单机的QPS有一定的极限,一两万QPS一台应该 ...

  6. 从服务端架构设计角度,深入理解大型APP架构升级

    随着智能设备普及和移动互联网发展,移动端应用逐渐成为用户新入口,重要性越来越突出.但企业一般是先有PC端应用,再推APP,APP 1.0版的功能大多从现有PC应用平移过来,没有针对移动自身特点考虑AP ...

  7. 【JAVA进阶架构师指南】之一:如何进行架构设计

    前言   本博客是长篇系列博客,旨在帮助想提升自己,突破技术瓶颈,但又苦于不知道如何进行系统学习从而提升自己的童鞋.笔者假设读者具有3-5年开发经验,java基础扎实,想突破自己的技术瓶颈,成为一位优 ...

  8. RocketMQ架构原理解析(一):整体架构

    RocketMQ架构原理解析(一):整体架构 RocketMQ架构原理解析(二):消息存储(CommitLog) RocketMQ架构原理解析(三):消息索引(ConsumeQueue & I ...

  9. Yarn介绍(设计理念与基本架构)

    Yarn : 新的计算框架,是一个全局资源管理器,负责整个集群的资源管理和分配   一. Yarn产生背景       Hadoop1.0MR有局限性,概括为以下几个方面 :  扩展性差 可靠性差 资 ...

随机推荐

  1. Word 的页眉、页脚、页码分别是什么?怎么设置?

    页眉:在 Word 文档中,每个页面的顶部区域为页眉.常用于显示文档的附加信息,可以插入时间.图形.公司微标.文档标题.文件名或作者姓名等. 页脚:页脚与页眉的作用相同,都可以作为显示文档的附加信息, ...

  2. 国家都给NISP证书的补贴了!关于NISP考试的政策有哪些?

    NISP证书由中国信息安全测评中心依据中编办赋予"信息安全服务和信息安全专业人员的能力评估与资质审核"的职能而推出的证书,是中国信息安全测评中心代表国家实施的信息安全人员能力评定证 ...

  3. 第四章 部署K8s前准备工作

    一.主机准备 1.硬件 准备5台2C/2g/50g虚拟机: Centos7.6系统 2.集群规划 使用10.4.7.0/24网络 IP 主机名 10.4.7.11 hdss7-11.host.com ...

  4. 声明式HTTP客户端-Feign 使用入门详解

    什么是 OpenFeign OpenFeign (以下统一简称为 Feign) 是 Netflix 开源的声明式 HTTP 客户端,集成了 Ribbon 的负载均衡.轮询算法和 RestTemplat ...

  5. K8S_三种Port区别总结

    nodePort: 外部流量访问K8S集群中Service入口的一种方式 比如外部用户要访问k8s集群中的一个Web应用,那么我们可以配置对应service的type=NodePort,nodePor ...

  6. gem5使用记录,gem5入门学习和环境配置。

    工作需要,对gem5有点兴趣,准备自己研究一下,gem5新手刚开始入门学习,主要参考了网上其他前人的文章和官方说明. 目前网上的前人文章有部分有点太早了,稍显过时,我结合自己的经历来整理一下流程. g ...

  7. SDUT 2022 Autumn Team Contest 7th

    1.J题:给你T组数据,每一组数据给你一个区间,让你求这个区间的范围,区间的起始时间和终止时间可能被包含或重复 思路:思路的话,就是直接把给定的两个区间的之间的数包括端点存到vector去重,然后直接 ...

  8. 华南理工大学 Python第1章课后小测

    1.(单选)计算机有两个基本特性:功能性和()性.(本题分数:5)A) 可存储B) 可计算C) 可通信D) 可编程您的答案:D  正确率:100%2.(单选)计算机硬件可以直接识别和执行的程序设计语言 ...

  9. Java SE Object类

    1.Object类 equals 方法 == 和 equals 的对比 == 是一个比较运算符 == 既可以判断基本类型,又可以判断引用类型 == 如果判断的是基本类型,判断的是值是否相等 == 如果 ...

  10. MySQL 安装(二进制版)

    MySQL 的安装方式一般分为三种,二进制版本.编译版本.RPM 包.比较常见的是二进制版本安装,方便简单,相对于编译安装,如果不是追求极致性能,使用起来差别不大.本次教程以二进制版本为例,系统为 c ...