bigdata-09-Yarn原理与实战

简介: bigdata-09-Yarn原理与实战

2.9-Yarn

什么是Yarn?

从Hadoop2开始,官方把资源管理单独剥离出来,主要是为了考虑后期作为一个公共的资源管理平台,任何满足规则的计算引擎都可以在它上面执行。所以YARN可以实现HADOOP集群的资源共享,不仅仅可以跑MapRedcue,还可以跑Spark、Flink。

Yarn架构分析

ResourceManager:是主节点,主要负责集群资源的分配和管理NodeManager:是从节点,主要负责当前机器资源管理

Yarn资源管理模型

YARN主要管理内存和CPU这两种资源类型

当NodeManager节点启动的时候自动向ResourceManager注册,将当前节点上的可用CPU信息和内存 信息注册上去。

集群内存:24GB

集群CPU 16Cores

活跃从节点3个,其中主节点是主从一体节点

这里显示的节点参数是

  • yarn.nodemanager.resource.memory-mb:单节点可分配的物理内存总量,默认是8MB*1024, 即8G
  • yarn.nodemanager.resource.cpu-vcores:单节点可分配的虚拟CPU个数,默认是8

就算你机器没有,读取默认的也会读取到这个值,属于虚标。

Yarn资源调度

集群资源是有限的,所以需要用资源调度器来进行合理分配。

资源调度器分为三种

  • FIFO Scheduler:先进先出
  • Capacity Scheduler:先进先出的多队列版本,队列内部先进先出
  • FairScheduler:多队列,多用户共享资源

  • FIFO Scheduler:是先进先出的,大家都是排队的,如果你的任务申请不到足够的资源,那你就等 着,等前面的任务执行结束释放了资源之后你再执行。这种在有些时候是不合理的,因为我们有一些 任务的优先级比较高,我们希望任务提交上去立刻就开始执行,这个就实现不了了。
  • CapacityScheduler:它是FifoScheduler的多队列版本,就是我们先把集群中的整块资源划分成多 份,我们可以人为的给这些资源定义使用场景,例如图里面的queue A里面运行普通的任务, queueB中运行优先级比较高的任务。这两个队列的资源是相互对立的 但是注意一点,队列内部还是按照先进先出的规则。
  • FairScheduler:支持多个队列,每个队列可以配置一定的资源,每个队列中的任务共享其所在队列 的所有资源,不需要排队等待资源 具体是这样的,假设我们向一个队列中提交了一个任务,这个任务刚开始会占用整个队列的资源,当 你再提交第二个任务的时候,第一个任务会把他的资源释放出来一部分给第二个任务使用

实际工作中,我们一般使用第二种资源调度器

实战:Yarn配置多资源队列

我们增加2个队列,一个是online队列,一个是offline队列

online队列里面运行实时任务

offline队列里面运行离线任务

具体步骤如下:
修改集群中 etc/hadoop 目录下的 capacity-scheduler.xml 配置文件
修改和增加以下参数,针对已有的参数,修改value中的值,针对没有的参数,则直接增加
这里的 default 是需要保留的,增加 online,offline ,这三个队列的资源比例为 7:1:2
具体的比例需要根据实际的业务需求来,看你们那些类型的任务比较多,对应的队列中资源比例就调高一
些,我们现在暂时还没有online任务,所以我就把online队列的资源占比设置的小一些。
先修改bigdata01上的配置

1:指定多队列

<property>
  <name>yarn.scheduler.capacity.root.queues</name>
  <value>default,online,offline</value>
  <description>队列列表</description>
</property>

2.指定默认队列资源70%

<property>
  <name>
    yarn.scheduler.capacity.root.default.capacity
  </name>
  <value>70</value>
  <description>default队列70%</description>
</property>

3.另外两个队列的资源

<property>
<name>yarn.scheduler.capacity.root.online.capacity</name>
<value>10</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.offline.capacity</name>
<value>20</value>
</property>

4.资源上线

<property>
 <name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
 <value>70</value>
 <description>Default队列可使用的资源上限.</description>
 </property>
 <property>
 <name>yarn.scheduler.capacity.root.online.maximum-capacity</name>
 <value>10</value>
 </property>
 <property>
 <name>yarn.scheduler.capacity.root.offline.maximum-capacity</name>
 <value>20</value>
 </property>

分别拷贝到2号机和3号机

scp -rq capacity-scheduler.xml bigdata02:/data/soft/hadoop-3.2.0/etc/hadoop/
scp -rq capacity-scheduler.xml bigdata03:/data/soft/hadoop-3.2.0/etc/hadoop/

重启集群生效配置

针对资源调度的看法

  • FIFO Scheduler:仅做了解弃用
  • Capacity Scheduler:容量调度器尝试用在集群节点100台+以上
  • Fair Scheduler:节点台数<100优选,资源灵活配置

针对Fair Scheduler:

假设有两个用户 A 和 B,分别拥有一个自己的队列 Queue A 和 Queue B。当 A 启动一个 job1 而 B 没有提交任务时,A 会获得集群的全部资源(Queue A + Queue B);当 A 的 job1 仍在运行,且 B 启动第一个 job2 时,Queue A 会逐渐释放一半资源,两个任务会各自占用集群的一半资源。如果此时 B 再启动第二个 job3 并且其它 job 仍在运行时,则它将会和 B 的第一个 job2 共享队列 B 的资源,也就是 Queue B 的两个 job 将会分别占用集群的四分之一资源,而 A 的 job1 仍然占用集群的一半资源。

此时,这个过程中,job1 和 job2 分别占用集群的一半资源,后来由于 job3 的加入,job2 和 job3 平分 Queue B 的资源。最终结果就是集群的资源在两个用户之间实现了公平共享。

参考案例:

生产级实践:Oozie Launcher优化,配合Yarn资源调度模式能够更好地理解

https://support.huaweicloud.com/trouble-mrs/mrs_03_0302.html

https://blog.csdn.net/bigdataprimary/article/details/84314377

https://blog.csdn.net/godlovedaniel/article/details/106094675

https://blog.51cto.com/u_15278282/5154702

https://blog.csdn.net/weixin_30016961/article/details/112092823?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-0.essearch_pc_relevant&spm=1001.2101.3001.4242

2.10-官方文档使用

官网截图先来一张。

三步使用法:

1.下载

2.开始

3.阅读文档

Download没什么好说的,下载好部署即可

Getting Started

主要包含了一些分布式配置信息和伪分布式配置信息等等

Documentation

主要是Hadoop一些核心操作的文档等

目录
相关文章
|
19天前
|
资源调度 分布式计算 监控
【Hadoop Yarn】Yarn 工作机制
【4月更文挑战第7天】【Hadoop Yarn】Yarn 工作机制
|
19天前
|
分布式计算 资源调度 监控
【Hadoop Yarn】Hadoop Yarn 概述
【4月更文挑战第7天】【Hadoop Yarn】Hadoop Yarn 概述
|
30天前
|
存储 分布式计算 关系型数据库
bigdata-08-MapReduce原理到实战
bigdata-08-MapReduce原理到实战
21 0
|
8月前
|
资源调度 分布式计算 监控
Hadoop学习---9、Yarn(一)
Hadoop学习---9、Yarn(一)
|
8月前
|
资源调度 分布式计算 算法
Hadoop学习---9、Yarn(二)
Hadoop学习---9、Yarn(二)
|
资源调度 分布式计算 监控
Hadoop2.x 让你真正明白yarn
Hadoop2.x 让你真正明白yarn
90 0
Hadoop2.x 让你真正明白yarn
|
分布式计算 资源调度 Hadoop
【Hadoop】YARN伪分布式部署和MapReduce案例
前几篇文章 我们介绍了HDFS组件的配置及启动,Yarn是Hadoop集群的资源与作业调度平台,下面介绍下Yarn的伪分布部署及MapReduce简单使用。
195 0
【Hadoop】YARN伪分布式部署和MapReduce案例
|
分布式计算 资源调度 算法
Hadoop面试题(四)——YARN
简述hadoop1与hadoop2 的架构异同、为什么会产生 yarn,它解决了什么问题,有什么优势?、HDFS的数据压缩算法?(☆☆☆☆☆)、Hadoop的调度器总结(☆☆☆☆☆)、MapReduce 2.0 容错性(☆☆☆☆☆)、mapreduce推测执行算法及原理,以下有答案。
242 0
Hadoop面试题(四)——YARN
|
资源调度 分布式计算 监控
深入浅出 Hadoop YARN
一. Hadoop Yarn 是什么 在古老的 Hadoop1.0 中,MapReduce 的 JobTracker 负责了太多的工作,包括资源调度,管理众多的 TaskTracker 等工作。这自然是不合理的,于是 Hadoop 在 1.0 到 2.0 的升级过程中,便将 JobTracker 的资源调度工作独立了出来,而这一改动,直接让 Hadoop 成为大数据中最稳固的那一块基石。
2855 0

相关实验场景

更多