Yarn框架
介绍
1、Hadoop包含三个组件:HDFS、MapReduce、Yarn 2、Yarn是Hadoop2.x出现的 3、Yarn主要是MapReduce运行提供资源

Yarn的架构
1、Yarn是一个主从架构 主节点:ResourceManager 从节点:NodeManager
2、ResourceManager功能 1)接受客户端发起的任务,并将该任务交给NodeManager去执行 2)划分整个集群的计算资源 3、NodeManager 1)真正的去执行计算任务 2)真正的资源的提供者(内存和CPU) 3)NodeManager会定时向ResourceManager汇报资源使用情况,并保持心跳
4、AppMaster(Application Master) 1)每启动一个任务job,就会启动一个该任务的管理者AppMaster,有多少个任务就会有多少个AppMaster 2)AppMaster负责整个任务从提交到结束整个的过程
5、Container 1)Container可以理解为一个抽象的资源容器,是资源分配的单位,本质上是Java类对象 2)Container内部包含的计算资源 Container {node1:2G-2vcore,node2:4G:4vcore} 3)Container本身没有资源,它只是告诉Job,去哪里要多少资源

(重点)任务在Yarn上的执行流程

(重点)Yarn的调度器

-
2、容量调度器(Capacity Scheduler) 1、Apache的Hadoop默认使用的就是该调度器 2、容量调度器是将整个资源划分成多个队列,每一个队列占用一部分资源 3、在提交任务时需要指定你要使用哪一个队列的资源,如果没有指定则使用默认队列 4、容量调度器默认只有一个队列:default队列,如果想要建立其他队列则需要手动来设置 5、执行任务的队列必须是叶子,也就是队列树中最末端队列 6、给队列设置的资源占比都是资源的下限比例,默认最多可以使用%100的全部资源

-
如果手动配置队列 #如果你想让你的Yarn集群使用某种调度器,则需要在yarn-site.xml中添加以下标签:
-- 容量调度器
<property>
<name>yarn.resourcemanager.scheduler.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity. CapacityScheduler</value>
</property>
###############容量调度器的配置步骤#########################3
1、在etc/hadoop目录下备份capacity-scheduler.xml文件
cp capacity-scheduler.xml capacity-scheduler.xml_bak #备份之前的调度器配置文件
2、在node1上,设置调度器队列参数,将原来 capacity-scheduler.xml文件内容删除,添加以下内容
<?xml version="1.0"?>
<configuration>
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>default,prod,dev</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.default.capacity</name>
<value>80</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.prod.capacity</name>
<value>10</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.capacity</name>
<value>10</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>
<value>75</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.queues</name>
<value>eng,science</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.eng.capacity</name>
<value>50</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dev.science.capacity</name>
<value>50</value>
</property>
</configuration>
3、在node1上刷新队列
yarn rmadmin -refreshQueues
4、给队列提交任务
hadoop jar \
/export/server/hadoop-3.3.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.0.jar \
pi \
-Dmapreduce.job.queuename=prod \
2 10000

|