IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【博学谷学习记录】超强总结,用心分享|狂野大数据课程【Yarn框架】的总结分析 -> 正文阅读

[大数据]【博学谷学习记录】超强总结,用心分享|狂野大数据课程【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任务,都会对总资源进行平均分配
    
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:41:08  更:2022-10-17 12:45:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/4 7:17:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码