Hadoop历险记(五 理解YARN)

上一篇理解了HDFS。 这一篇说说YARN。
什么是YARN?

yarn是一个通用的资源管理和调用平台。 核心: 管理,调度。
之前说了 YARN和HDFS一样是集群。 那么就意味着 它也不是单机器部署 而是每个机器都有。 跟HDFS一样 也是标准的主从架构。

这里是面对新手的分享 所以我们还是从最基本的开始解释


资源管理
一个程序在某个地方运行 它需要硬件资源 需要内存 需要CPU, 上一篇中讲过HDFS的NN 它管理元数据 通过元数据查找具体数据在哪个机器上 哪个块里面 这个运行的过程 就需要内存 需要cpu。
为了更合理的使用这些资源 需要一个合适的管理者 进行管理和分配


调度平台
你在管理一块资源 这时候多个程序都过来 要运行 都需要资源。这时候 你第一要计算资源的分配 这块给你 那块给他,第二还有一个调度的规则 一块资源 两个程序同时要 那么你怎么根据一个合理的算法 来分蛋糕。


通用
这两个字 才是yarn的精髓, 它不单单支持MR 它支持各种计算程序。
我不关心 你是哪个计算程序 我只关心你要资源 有的情况下给你块蛋糕
用完之后 再还给我。所以它有点操作系统的影子对吧。
(所以工作中hadoop里面某个程序卡死了 都会去yarn上面看下 是哪个SB调用了太多的资源 哪个sb卡住了 )

所以这里就真正体现了YARN的核心地位和优势。
传统上 是 MP+YARN+HDFS. 计算调用+资源管理+数据存储
yarn把计算使用 和数据存储 完美的分割开了。
如果你觉得MP 不行 你可以换一个spark过来 发现它也可以在YARN上面运行 那就变成了spark+YARN+HDFS。

充分体现了它的包容性。


架构

之前Hadoop里面讲了 YARN的主从架构:resource manager 和node manager
在这里插入图片描述

这里四台机器 一主三从, 外面俩客户端 他们是资源的申请方 跑来找yarn要资源的。

这里有个 app Mstr 。 它属于应用程序资源。他是程序的管理者。

还有个container 容器。 什么是容器 他是资源的抽象。刚才说了管理资源要分配内存 那你怎么分配呢? 拿刀切?肯定不行的 这是硬件资源里面一个重要的技术 就是将资源进行虚拟隔离。


所以梳理一下:

  • RM 集群里面的主角色 YARN的老大 与hdfs里面的NN相似。 它只有一个 决定所有程序的资源分配权
  • NM:从角色 一个机器上一个 负责本机器上的计算资源。启动容器 监视容器的资源使用情况 向RM主角色汇报
  • app Mstr:注意它是程序层面的不是物理层面的 用户提交的每一个程序都包含一个AM 监督程序的执行情况。只有具体的程序在机器上跑 调用资源 才会出现AM

交互

核心交互:

  • client——RM : 首先你的客户端 MR /spark/flink 这些东西 第一步要跟RM提交作业 代表开始向yarn要资源
  • AppMst——RM: 这里程序代表appM 向RM申请资源
  • 程序内部具体的计算过程执行状态 向appM汇报状态 看执行的怎么样了
  • NM从节点——RM 向主节点汇报 每台机器资源的分配情况

主要流程:
在这里插入图片描述

  • 任何一个程序 不管是MR /spark/flink 当它向yarn上面提交,它首先要启动application master AppM,而不是启动程序的具体计算过程。RM接到这个请求之后,它在一个从节点机器上面 为该应用程序分配一个容器(切割好的一块虚拟资源), 它会和这台机器上的NM通信 告诉他启动这个容器的APPM
  • 这时候从节点上的AM启动成功了 它首先和RM注册保持通信 这样用户可以直接通过RM 监控应用程序的运行状态
  • 搞完这些前置工作 这时候AM为本次程序里面各个具体的task 向RM申请资源 这时候MR /spark/flink这些里面的计算 查询一堆堆具体的功能才开始真正运行. (注意 只有RM有分配资源的最终权力 AM不能自己分配还是向RM申请)
  • 这时候程序里面的具体task已经在跑了 比如在操作数据 他们在运行的时候 通过RPC协议和自己所属的APPM通信 随时汇报 这样AppM 可以随时监督 。
  • 一直等到程序运行完毕 APPM 向RM汇报 注销关闭自己 释放资源。

调度规则

前面讲了 yarn的资源分配流程。 这里说一下调度规则 刚才是一个client 向yarn集群要资源,
现在一万个client跑过来向yarn集群要资源 这时候怎么办?
新手可能想到的最直观的就是 先到先得 排队。 但是这样话效率太低 而且不稳定。
这里介绍一种比较常用的yarn的调度 叫做
capacity schedule
在这里插入图片描述
它把集群的所有的资源先做一个划分 划分成若干个部分 每个部分提供给一个队列。
比如简单点划分成2个部分 七三开, 提供给A任务队列 和B任务队列。计算量大的任务放到A 小的放到B.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值