【博学谷学习记录】超强总结,用心分享|狂野大数据课程【Yarn框架】的总结分析

Yarn框架

介绍

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

Yarn框架

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的调度器

  • 概念

    当我们客户端向Yarn一次提交多个任务时,Yarn如何去给多个任务分配资源,此时就需要使用调度器,通俗的来讲,调度器就是来规定多个任务如何分配Yarn的资源

  • 调度器的分类

    • 1、队列调度器(FIFO Scheduler)

      该调度器,会将提交的Job放入一个队列中,先进入的Job会优先得到所有资源,可能会导致某个一个Job占用大部门资源,而且执行时间较长,会影响后期job的运行,所以该调取策略一般不用

在这里插入图片描述

  • 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>
            <!-- 分为三个队列,分别为default,prod和dev -->  
            <property>
                    <name>yarn.scheduler.capacity.root.queues</name>
                    <value>default,prod,dev</value> 
            </property>
            <!--default队列容量为80% -->  
             <property>
                    <name>yarn.scheduler.capacity.root.default.capacity</name>
                    <value>80</value>
             </property>
    
            <!-- 设置prod队列10% -->      
            <property>
                    <name>yarn.scheduler.capacity.root.prod.capacity</name>
                    <value>10</value>
            </property> 
    
      
            <!-- 设置dev队列10% -->  
            <property>
                    <name>yarn.scheduler.capacity.root.dev.capacity</name>
                    <value>10</value> 
            </property>
        
            <!-- 设置dev队列可使用的资源上限为75% -->  
            <property>
                    <name>yarn.scheduler.capacity.root.dev.maximum-capacity</name>
                    <value>75</value> 
            </property>
              <!-- dev继续分为两个队列,分别为eng和science -->      
            <property>
                    <name>yarn.scheduler.capacity.root.dev.queues</name>
                    <value>eng,science</value> 
            </property>
    
            <!-- 设置eng队列50% -->    
            <property>
                    <name>yarn.scheduler.capacity.root.dev.eng.capacity</name>
                    <value>50</value> 
            </property>
            <!-- 设置science队列50% -->   
            <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
    
    
    

在这里插入图片描述

  • 3、公平调度器(Fair Scheduler)

    1、CDH(Cloudera Hadoop)默认就使用该调度器
    2、不管来多少job任务,都会对总资源进行平均分配
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值