Hadoop的第三大组成:YARN框架

news2024/11/23 14:25:27

Hadoop的第三大组成--YARN框架

  • 一、YARN基本概念
  • 二、YARN的基本架构组成
    • 1、ResourceManager:YARN集群的管理者
    • 2、NodeManager
    • 3、Container
    • 4、ApplicationMaster
  • 三、YARN的详细工作流程--运行MapReduce
  • 四、YARN的资源调度器问题
  • 五、YARN的web网站问题

一、YARN基本概念

YARN是一个分布式资源调度系统,专门用来给分布式计算程序提供计算资源的,而且YARN只负责进行资源的提供,不管计算程序的逻辑,因此YARN这个软件非常的成功,因为YARN不关注程序计算逻辑,因此只要是分布式计算程序,只要满足YARN的运行要求,那么就可以在YARN上进行运行,由YARN进行资源调度。spark、flink等等分布式计算程序都可以在YARN上运行。

二、YARN的基本架构组成

YARN之所以提供分布式计算资源,主要原因就是因为YARN的设计架构。

1、ResourceManager:YARN集群的管理者

  • 1、负责进行资源的配置
  • 2、负责整个集群的状态
  • 3、接受客户端或者applicationmaster的资源申请

2、NodeManager

  • 1、负责接受RM给NM分配的task任务(就是资源的打包任务)
  • 2、负责启动Container容器(打包的计算程序所需的运行资源)

以上两个组成,YARN启动之后就会有的进程。

3、Container

封装了一组计算资源的容器,包含了计算程序所需的资源,资源的具体的配额都是客户端或者ApplicationMaster去向RM申请。

4、ApplicationMaster

任何一个分布式计算程序如果想在YARN上运行,分布式计算程序必须能启动一个ApplicationMaster进程,比如MR程序在YARN上运行就会启动MRAppcationMaster。这个进程不是由YARN自带的,而是分布式计算程序想在YARN上运行,分布式计算程序必须得有这么一个进程。

YARN的工作核心,YARN之所以不知道分布式计算程序的计算逻辑,还能给分布式计算程序提供资源,全凭借ApplicationMaster的存在,ApplicationMaster是分布式程序运行的核心,监控分布式计算程序有没有运行成功、负责向RM申请分布式程序运行的资源。

当有分布式计算程序在YARN上运行的时候,才会出现这两个进程。

三、YARN的详细工作流程–运行MapReduce

​ (0)MR程序提交到客户端所在的节点

​ (1)yarnrunner向ResourceManager申请一个application。

​ (2)RM将该应用程序的资源路径返回给yarnrunner

​ (3)该程序将运行所需资源提交到HDFS上

​ (4)程序资源提交完毕后,申请运行MRAppMaster

​ (5)RM将用户的请求初始化成一个task

​ (6)其中一个NodeManager领取到task任务。

​ (7)该NodeManager创建容器Container,并产生MRAppmaster

​ (8)Container从HDFS上拷贝资源到本地

​ (9)MRAppmaster向RM 申请运行MapTask容器

​ (10)RM将运行MapTask任务分配给另外两个NodeManager,另外两个NodeManager分别领取任务并创建容器。

​ (11)MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序。

​ (12)MRAppmaster向RM申请2个容器,运行ReduceTask。

​ (13)ReduceTask向MapTask获取相应分区的数据。

​ (14)程序运行完毕后,MR会向RM注销自己。

四、YARN的资源调度器问题

YARN在进行资源分配的时候,RM需要先将client或者AM申请的资源初始化成为一个task任务,资源的task任务不是直接下发给NM,而是先把task任务给加入到一个RM的调度器当中,由调度器在合适的时机下发任务给NM。

YARN中一共三种的资源调度器:

  • FIFIO资源调度器

    • 是一种队列调度器,每一个任务加入到调度器中,按照时间的先后依次排列,给NM下发任务的时候,是先来的先分配,后来等待集群资源充足继续分配。
      只有一个队列,队列使用的集群中所有的资源。
    • 特点:如果有些任务比较重要,必须排队,只有等到队列中你排到了最前面了才会给你分配。
    • Hadoop1.x版本YARN默认的调度器机制
  • 容量调度器

    • 也是一个队列调度器,但是多个队列并行进行分配,每一个队列具备YARN集群中的部分资源。在同一个时刻,可以下发多个任务。
    • Hadoop2.x和hadoop3.x默认调度器
  • 公平调度器

    • 也是可以具备多个队列,每个队列具备集群中的部分资源,不一样的地方在于每一个队列中的任务不等待,每一个任务都会启动,均匀的享有集群的资源。
  • 修改:yarn-site.xml

    • yarn.resourcemanager.scheduler.class
      org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
      

默认使用的容量调度器,容量调度器可以有多个队列,每一个队列占用集群的部分资源,默认情况下容量调度只有一个队列default,队列占有集群的所有资源,如果配置容量调度器的第二个队列:capacity-scheduler.xml。

  • <property>
        <name>yarn.scheduler.capacity.root.queues</name>
        <value>default,queueA</value>
        <description>
          The queues at the this level (root is the root queue).
        </description>
      </property>
    容量调度器有几个队列
    
  • <!-- default 队列占用的资源容量百分比 40% -->
    <property>
        <name>yarn.scheduler.capacity.root.default.capacity</name>
        <value>40</value>
      </property>
      <!-- default 队列占用的最大资源容量百分比 60%-->
      <property>
        <name>yarn.scheduler.capacity.root.default.maximum-capacity</name>
        <value>60</value>
      </property>
    
  • 如果要配置多个队列,保证多个队列的capacity加起来是100,每一个队列的最大占用容量要大于等于配置队列容量。

五、YARN的web网站问题

YARN提供一个web网站,http://ip:8088,通过这个web网站,可以查看YARN集群的资源信息和队列信息,以及可以查看YARN上运行的分布式计算程序的状态以及运行的日志输出。

存在问题

  • 1、YARN记录的分布式运行程序,只是本次开启有效,如果YARN关闭重启了,那么以前在YARN上运行的日志全部消失了。
  • 2、YARN记录的分布式运行程序,在网站上看不到详细的日志信息,因此后期维护或者查看MR运行信息就很麻烦了。

解决上述问题的方案

  • 第一步:配置MapReduce的历史服务器JobHistory,可以帮助YARN记忆以前开启的时候运行的MR程序。
    历史服务器的配置主要在mapred-site.xml文件中配置,主要配置两项

    • <property>
            <name>mapreduce.jobhistory.address</name>
             <value>single:10020</value>
      </property>
      <property>
          <name>mapreduce.jobhistory.webapp.address</name>
          <value>single:19888</value>
      </property>
      
    • 如果使用历史服务器,必须启动历史服务器,如果不启动,历史服务器不会记录YARN上运行的分布式计算程序
      mr-jobhistory-daemon.sh start historyserver

  • 第二步:配置YARN聚合MapReduce运行日志信息–可以在YARN的web界面查看MR的详细日志
    配置yarn-site.xml文件

    • <!-- 日志聚集功能启动 -->
      <property>
          <name>yarn.log-aggregation-enable</name>
          <value>true</value>
      </property>
      <!-- 日志保留时间设置7天 -->
      <property>
              <name>yarn.log-aggregation.retain-seconds</name>
              <value>604800</value>
      </property>
      
      <property>
             <name>yarn.log.server.url</name>
             <value>http://single:19888/jobhistory/logs</value>        
      </property>
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/989539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字展厅有什么优势,一文了解数字展厅建设方案

引言&#xff1a; 在当今数字化风潮的席卷下&#xff0c;企业们正积极寻求创新的方式来吸引和互动他们的客户。数字展厅作为一种新型的虚拟宣传工具&#xff0c;已经开始引起广泛的关注。 一&#xff0e;什么是数字展厅&#xff1f; 数字展厅是一种基于虚拟现实&#xff08;V…

C++数据结构类的自实现,封装栈,循环队列

my_Queue.h #ifndef MY_QUEUE_H #define MY_QUEUE_Hclass My_Queue { private:int* m_queue; //队列空间指针int front; //队头int tail; //队尾int m_length; //队列长度public://构造函数My_Queue(int len);//构造拷贝函数My_Queue(const My_Queue& obj);//队列长度in…

“构建高效的SpringMVC增删改查应用“

目录 引言1.配置SpringMVCpom.xmlweb.xmlzking.tldgeneratorConfig.xmljdbc.propertieslog4j2.xmlspring-context.xmlspring-mvc.xmlspring-mybatis.xmlStudentBizImplPagerAspectPageTag 2.实现代码功能StudentController 3.JSP页面代码List.jspedit.jspheard.jsp 4. 运行截图…

Linux--进程--进程-父进程退出

1.进程退出函数 进程退出分为正常退出&异常退出 正常退出&#xff1a; 1、main函数调用return 2、进程调用exit(),标准c库 3、进程调用_exit()或者_Exit(),属于系统调用 补充 1、进程最后一个线程返回 2、最后一个线程调用pthread_exit 异常退出&#xff1a; 1、调用abo…

十九、MySQL外键删除更新行为如何实现?

1、行为约束 &#xff08;1&#xff09;基础概念&#xff1a; 要学习外键约束&#xff0c;就要先了解外键约束。 比如说&#xff0c;现在这里有两张表&#xff0c;其中一张存储着用户的信息(子表)&#xff0c;另外一张存储着用户所属的部门(父表) &#xff0c;但现在…

c++的引用和指针

我们要清楚的知道&#xff0c;使用指针和引用都可以的传入函数的main函数的变量在局部函数改变值时&#xff0c;main函数里面相应的变量也会改变值。但他俩的方式不同。 我们先来说指针&#xff0c;指针传入局部参数时&#xff0c;他会在创建个局部指针变量&#xff0c;然后把…

UMA 2 - Unity Multipurpose Avatar☀️一.让UMA角色动起来

文章目录 🟥 项目基础配置1️⃣UMA_DCS 预制体2️⃣创建 UMA 角色🟧 让UMA动起来1️⃣ 新建空场景,添加UMA_DCS预制体2️⃣配置 vBasicController_Template🟥 项目基础配置 1️⃣UMA_DCS 预制体 将 UMA_DCS 预制体放到场景中 2️⃣创建 UMA 角色 创建空物体,添加 Dy…

C++编译静态成员函数报错: “osgGA::DriveManipulator::setEye”: 非静态成员函数的非法调用

来看代码 .h文件中 static void computePosition(const osg::Vec3d& eye,const osg::Vec3d& lv,const osg::Vec3d& up); void setEye(const osg::Vec3d& eye); void setRotation( const osg::Quat& rotation );osg::Vec3d _eye; osg::Quat _rotation…

Sentinel 部署 配置

目录 概述什么是 SentinelSentinel的特性hystrix与sentinel的区别Sentinel客户端Sentinel服务端 下载安装服务熔断(openfeign) 1. 添加依赖2. 创建 Feign 接口3. Controller调用接口流控规则 概述测试接口准备流控规则配置 1. QPS2. 线程数3. 关联4. 链路5. Warm up&#xff0…

基于Bert+Attention+LSTM智能校园知识图谱问答推荐系统——NLP自然语言处理算法应用(含Python全部工程源码及训练模型)+数据集

目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境服务器环境 模块实现1. 构造数据集2. 识别网络3. 命名实体纠错4. 检索问题类别5. 查询结果 系统测试1. 命名实体识别网络测试2. 知识图谱问答系统整体测试 工程源代码下载其它资料下载 前言 这个项目充分利用了…

docker-compose deploy 高可用 elasticsearch TLS

文章目录 1.sysctl2. swap3. hosts4. 配置 instances.yaml5. 创建证书6. 部署7. 修改 kibanna 密码8. 清理 1.sysctl [rootgithub es_tls]# cat /etc/sysctl.conf # sysctl settings are defined through files in # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/…

第二证券:现量和现手是什么意思?

现量和现手是证券生意领域的术语。现量通常指股票或其他证券最新成交价格对应的成交量&#xff0c;而现手则是指当日生意的股票或证券的总成交量。了解这些概念关于证券生意的参与者至关重要。以下我们将从多个视点深化分析现量和现手的含义。 首要&#xff0c;现量和现手关于…

2023高教杯数学建模1:ABC题目+初步想法

2023 ABC题目初步想法 写在最前面A题&#xff1a;定日镜场的优化设计问题1&#xff1a;建模将其抽象为数学公式问题2&#xff1a;固定部分参数&#xff0c;约束条件下的局部最优化问题可尝试方法 问题3&#xff1a;约束条件下的局部最优化问题附录&#xff1a;相关计算公式参考…

Mac系统,webots和pycharm联合仿真,配置问题解决方案!

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 问题描述&#xff1a;mac系统下&#xff0c;webots和pycharm 联合仿真&#xff0c;适配问题 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 换mac电脑了&#xff0c;需要用到web…

4K超高清飞行箱(EFP)制作系统

EFP&#xff08;Electronic Field Production&#xff09;是一种节目现场制作方式&#xff0c;它将音视频设备集成在不同规格的标准飞行箱内&#xff0c;并将其运送至现场进行节目制作。与电视台演播室和大型转播车相比&#xff0c;箱载EFP系统具有操作方便、灵活部署、便携运输…

SpringMvc--CRUD

目录 一.什么是SpringMvc--CRUD 二.前期准备 公共页面跳转(专门用来处理页面跳转) 三.ssm之CRUD后端实现 配置pom.xml 双击mybatis-generator:generate自动生成mapper 编写generatorConfig.xml 项目结构 编写PagerAspect切面类 编写hpjyBiz接口类 编写hpjyBizImpl接…

如何使用Docker部署debezium来监控 MySQL 数据库

目录 一、什么是Docker 二、什么是debezium 三、什么是MySQL 四、如何使用Docker部署debezium来监控 MySQL 数据库 一、什么是Docker Docker是一个开源的应用容器引擎&#xff0c;它让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流…

扫地僧万能HTML模板站群:打造高效便捷的网站建设利器

扫地僧万能HTML模板站群是一款功能强大的网站建设工具&#xff0c;以其独特的特点和卓越的性能在网络开发领域广受赞誉。本文将介绍扫地僧万能HTML模板站群的几大特点&#xff0c;包括模板自动处理、一站管理、泛站独立、多套模板、蜘蛛统计、超强自定义、超强负载、简单高效、…

sql server 分区表

分区表 分区表是在SQL Server 2005之后的版本引入的特性&#xff0c;这个特性允许把逻辑上的一个表在物理上分为很多部分。换句话说&#xff0c;分区表从物理上看是将一个大表分成几个小表&#xff0c;但是从逻辑上看&#xff0c;还是一个大表。 步骤 创建分表区的步骤分为…

初学Python记

Python这个编程语言的大名当然听说过了呀&#xff0c;这几年特别火&#xff0c;火的一塌涂地。大家可以回忆一下&#xff1a;朋友圈推荐的广告里经常可以看见python的网课广告。 本学期&#xff0c;学校开设了python课程&#xff0c;这几天学习了一下入了一下门&#xff0c;感…