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一些核心操作的文档等

目录
相关文章
|
分布式计算 资源调度 大数据
黑马程序员-大数据入门到实战-MapReduce & YARN入门
黑马程序员-大数据入门到实战-MapReduce & YARN入门
159 0
|
4月前
|
资源调度 分布式计算 监控
【揭秘Hadoop YARN背后的奥秘!】从零开始,带你深入了解YARN资源管理框架的核心架构与实战应用!
【8月更文挑战第24天】Hadoop YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的资源管理器,为Hadoop集群上的应用提供统一的资源管理和调度框架。YARN通过ResourceManager、NodeManager和ApplicationMaster三大核心组件实现高效集群资源利用及多框架支持。本文剖析YARN架构及组件工作原理,并通过示例代码展示如何运行简单的MapReduce任务,帮助读者深入了解YARN机制及其在大数据处理中的应用价值。
99 0
|
资源调度 调度 容器
Hadoop3.0Yarn添加网络、磁盘IO等资源资料汇总及实战配置遇到的问题和解决办法
Hadoop3.0Yarn添加网络、磁盘IO等资源资料汇总及实战配置遇到的问题和解决办法
217 0
|
资源调度 分布式计算 Hadoop
YARN的高可用性HA配置实战
YARN的高可用性HA配置实战
377 0
|
资源调度 JavaScript 前端开发
Vue开发实战01-创建基础项目,包管理使用yarn
Vue开发实战01-创建基础项目,包管理使用yarn
352 0
|
分布式计算 大数据 Spark
Hadoop大数据平台实战(05):深入Spark Cluster集群模式YARN vs Mesos vs Standalone vs K8s
Hadoop大数据平台实战(05):Spark Cluster集群模式YARN, Mesos,Standalone和K8s深入对比。监控,调度,监控,安全机制,特性对比,哪个才是最好的Spark集群管理工具。
9461 0
|
资源调度 大数据 容器
史上最快! 10小时大数据入门实战(四)-分布式资源调度YARN
1 YARN 产生背景 2 YARN 架构 3 YARN 执行流程 1.
1400 0
|
分布式计算 Hadoop Apache
|
资源调度 分布式计算 Java
Hadoop2.7实战v1.0之YARN HA
YARN HA实战v1.0 当前环境:hadoop+zookeeper(namenode,resourcemanager HA)                  resourcemanager ...
1278 0
|
3月前
|
资源调度 分布式计算 Hadoop
YARN(Hadoop操作系统)的架构
本文详细解释了YARN(Hadoop操作系统)的架构,包括其主要组件如ResourceManager、NodeManager和ApplicationMaster的作用以及它们如何协同工作来管理Hadoop集群中的资源和调度作业。
149 3
YARN(Hadoop操作系统)的架构

相关实验场景

更多