广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Hadoop Yarn是什么意思
  • 164
分享到

Hadoop Yarn是什么意思

2024-04-02 19:04:59 164人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关hadoop Yarn是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 一. Hadoop Yarn 是什么 在古老的 Hadoo

这篇文章将为大家详细讲解有关hadoop Yarn是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

一. Hadoop Yarn 是什么

在古老的 Hadoop1.0 中,mapReduce 的 JobTracker 负责了太多的工作,包括资源调度,管理众多的 TaskTracker 等工作。这自然是不合理的,于是 Hadoop 在 1.0 到 2.0 的升级过程中,便将 JobTracker 的资源调度工作独立了出来,而这一改动,直接让 Hadoop 成为大数据中最稳固的那一块基石,而这个独立出来的资源管理框架,就是 Yarn 。

在详细介绍 Yarn 之前,我们先简单聊聊 Yarn ,Yarn 的全称是 Yet Another Resource NeGotiator,意思是“另一种资源调度器”,这种命名和“有间网”这种可谓是异曲同工之妙。这里多说一句,以前 Java 有一个项目编译工具,叫做 Ant,他的命名也是类似的,叫做 “Another Neat Tool”的缩写,翻译过来是”另一种整理工具“。

既然都叫做资源调度器了,那么自然,它的功能也是负责资源管理和调度的,接下来,我们就深入到 Yarn 这个东西内部一探究竟吧。

二. Yarn 架构

我们主要围绕上面这张图展开,不过在介绍图中内容时,需要先了解 Yarn 中的 Container 的概念,然后会介绍图中一个个组件,最后看看提交一个程序的流程。

2.1 Container

容器(Container)这个东西是 Yarn 对资源做的一层抽象。就像我们平时开发过程中,经常需要对底层一些东西进行封装,只提供给上层一个调用接口一样,Yarn 对资源的管理也是用到了这种思想。

如上所示,Yarn 将CPU核数,内存这些计算资源都封装成为一个个的容器(Container)。需要注意两点:

容器由 nodeManager 启动和管理,并被它所监控

容器被 ResourceManager 进行调度。

NodeManager 和 ResourceManager 这两个组件会在下面讲到。

2.2 三个主要组件

再看最上面的图,我们能直观发现的两个主要的组件是 ResourceManager 和 NodeManager ,但其实还有一个 ApplicationMaster 在图中没有直观显示。我们分别来看这三个组件。

ResourceManager

我们先来说说上图中最中央的那个 ResourceManager(RM)。从名字上我们就能知道这个组件是负责资源管理的,整个系统有且只有一个 RM ,来负责资源的调度。它也包含了两个主要的组件:定时调用器(Scheduler)以及应用管理器(ApplicationManager)。

定时调度器(Scheduler):从本质上来说,定时调度器就是一种策略,或者说一种算法。当 Client 提交一个任务的时候,它会根据所需要的资源以及当前集群的资源状况进行分配。注意,它只负责向应用程序分配资源,并不做监控以及应用程序的状态跟踪。

应用管理器(ApplicationManager):同样,听名字就能大概知道它是干嘛的。应用管理器就是负责管理 Client 用户提交的应用。上面不是说到定时调度器(Scheduler)不对用户提交的程序监控嘛,其实啊,监控应用的工作正是由应用管理器(ApplicationManager)完成的。

ApplicationMaster

每当 Client 提交一个 Application 时候,就会新建一个 ApplicationMaster 。由这个 ApplicationMaster 去与 ResourceManager 申请容器资源,获得资源后会将要运行的程序发送到容器上启动,然后进行分布式计算。

这里可能有些难以理解,为什么是把运行程序发送到容器上去运行?如果以传统的思路来看,是程序运行着不动,然后数据进进出出不停流转。但当数据量大的时候就没法这么玩了,因为海量数据移动成本太大,时间太长。但是中国有一句老话山不过来,我就过去。大数据分布式计算就是这种思想,既然大数据难以移动,那我就把容易移动的应用程序发布到各个节点进行计算呗,这就是大数据分布式计算的思路。

NodeManager

NodeManager 是 ResourceManager 在每台机器的上代理,负责容器的管理,并监控他们的资源使用情况(cpu,内存,磁盘及网络等),以及向 ResourceManager/Scheduler 提供这些资源使用报告。

三. 提交一个 Application 到 Yarn 的流程

这张图简单地标明了提交一个程序所经历的流程,接下来我们来具体说说每一步的过程。

Client 向 Yarn 提交 Application,这里我们假设是一个 MapReduce 作业。

ResourceManager 向 NodeManager 通信,为该 Application 分配第一个容器。并在这个容器中运行这个应用程序对应的 ApplicationMaster。

ApplicationMaster 启动以后,对 作业(也就是 Application) 进行拆分,拆分 task 出来,这些 task 可以运行在一个或多个容器中。然后向 ResourceManager 申请要运行程序的容器,并定时向 ResourceManager 发送心跳。

申请到容器后,ApplicationMaster 会去和容器对应的 NodeManager 通信,而后将作业分发到对应的 NodeManager 中的容器去运行,这里会将拆分后的 MapReduce 进行分发,对应容器中运行的可能是 Map 任务,也可能是 Reduce 任务。

容器中运行的任务会向 ApplicationMaster 发送心跳,汇报自身情况。当程序运行完成后, ApplicationMaster 再向 ResourceManager 注销并释放容器资源。

以上就是一个作业的大体运行流程。

为什么会有 Yarn ?

上面说了这么多,最后我们来聊聊为什么会有 Yarn 吧。

直接的原因呢,就是因为 Hadoop1.0 中架构的缺陷,在 MapReduce 中,jobTracker 担负起了太多的责任了,接收任务是它,资源调度是它,监控 TaskTracker 运行情况还是它。这样实现的好处是比较简单,但相对的,就容易出现一些问题,比如常见的单点故障问题。

要解决这些问题,只能将 jobTracker 进行拆分,将其中部分功能拆解出来。彼时业内已经有了一部分的资源管理框架,比如 mesos,于是照着这个思路,就开发出了 Yarn。这里多说个冷知识,其实 spark 早期是为了推广 mesos 而产生的,这也是它名字的由来,不过后来反正是 Spark 火起来了。。。

闲话不多说,其实 Hadoop 能有今天这个地位,Yarn 可以说是功不可没。因为有了 Yarn ,更多计算框架可以接入到 hdfs 中,而不单单是 MapReduce,到现在我们都知道,MapReduce 早已经被 Spark 等计算框架赶超,而 Hdfs 却依然屹立不倒。究其原因,正式因为 Yarn 的包容,使得其他计算框架能专注于计算性能的提升。Hdfs 可能不是最优秀的大数据存储系统,但却是应用最广泛的大数据存储系统,Yarn 功不可没。

关于“Hadoop Yarn是什么意思”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: Hadoop Yarn是什么意思

本文链接: https://www.lsjlt.com/news/89171.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Hadoop Yarn是什么意思
    这篇文章将为大家详细讲解有关Hadoop Yarn是什么意思,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 一. Hadoop Yarn 是什么 在古老的 Hadoo...
    99+
    2022-10-19
  • hadoop Yarn调度器Scheduler的特点是什么
    这篇文章主要讲解了“hadoop Yarn调度器Scheduler的特点是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“hadoop Yarn调度器Scheduler的特点是什么”吧!概...
    99+
    2023-06-03
  • Hadoop中Yarn基本架构是怎么样的
    这篇文章主要为大家展示了“Hadoop中Yarn基本架构是怎么样的”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Hadoop中Yarn基本架构是怎么样的”这篇文章吧。1 YARN 基本...
    99+
    2023-06-03
  • J2EE是什么意思2又是什么意思
    J2EE是Java 2 Platform, Enterprise Edition的缩写,意思是Java 2企业级平台。它是一种用于开...
    99+
    2023-09-20
    J2EE
  • YARN是什么
    这篇文章主要讲解了“YARN是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“YARN是什么”吧!  YARN是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提...
    99+
    2023-06-02
  • xml是什么意思
    一、元素定义 XML的元素定义是由开发者自行确定的,每个元素都由一个开始标签和一个结束标签组成,元素中可以包含文本、其他元素或者属性。 二、属性和值 XML元素可以包含属性,每个属性都有一个名称和一个值。例如,在一个XML...
    99+
    2023-10-29
    xml
  • dashboard是什么意思
    dashboard是一个用于可视化数据和监控系统的工具。用于展示和监控应用程序的关键指标和数据的用户界面,提供了一个集中的平台,让你能够快速了解应用程序的性能和运行状况,就像掌握了你家中各种设备的状态一样。dashboard就像一个商店的橱...
    99+
    2023-11-22
    dashboard
  • Rust是什么意思
    小编给大家分享一下Rust是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Rust 是什么Rust 是一种系统编程语言,它运行速度惊人,并且可以避免几乎所...
    99+
    2023-06-16
  • LVS是什么意思
    这篇文章主要介绍LVS是什么意思,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、LVS概念LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器。这是一个由章文嵩博士发起的一个开源项目,...
    99+
    2023-06-16
  • chatgpt是什么意思
    chatgpt是美国OpenAI开发的全新聊天机器人模型,它能通过学习和理解人类的语言进行对话,并根据聊天的上下文进行互动,协助人类...
    99+
    2023-02-08
    chatgpt
  • mybatis是什么意思
    这篇文章主要为大家展示了“mybatis是什么意思”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mybatis是什么意思”这篇文章吧。什么是mybatis:Mybatis本质是一种半自动化的OR...
    99+
    2023-06-27
  • JMS是什么意思
    小编给大家分享一下JMS是什么意思,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用...
    99+
    2023-06-27
  • ingress是什么意思
    ingress是基于域名的网络转发资源的意思。ingress是对集群中服务的外部访问进行管理的API对象,典型的访问方式是HTTP和HTTPS。Ingress可以提供负载均衡、SSL和基于名称的虚拟托管。ingress简介ingress是基...
    99+
    2023-07-10
  • ed是什么意思
    Ed是一种基本的文本编辑器,最早于1971年在Unix操作系统中开发。Ed编辑器的操作方式与其他编辑器不同,没有图形界面,所有操作都通过键盘命令完成。在Unix系统中,Ed编辑器通常被用作系统故障或其他紧急情况下的默认编辑器,因为它在资源受...
    99+
    2023-08-17
  • display:none是什么意思
    "display:none" 是CSS中一种样式属性,用于隐藏元素,使其不在页面上显示。当一个元素的"display"属性值设置为"...
    99+
    2023-08-30
    意思
  • mysqlinstaller是什么意思
    MySQLInstaller是MySQL官方提供的一个安装程序,用于方便地下载、安装和配置MySQL数据库服务器以及相关组件,使用MySQL Installer可以简化MySQL的安装和设置过程。本教程操作系统:Windows10系统、My...
    99+
    2023-08-02
  • remove是什么意思
    remove是从数据结构中删除一个元素、节点或字符的意思,具体的实现方式取决于所使用的编程语言和数据结构。无论是数组、链表还是字符串,remove操作都是程序员经常使用的操作之一,对于数据处理和算法实现都非常重要。本教程操作环境:windo...
    99+
    2023-08-04
  • c#是什么意思
    c#是一种通用的面向对象编程语言,由微软公司开发并推出。它是在.NET框架上运行的一种编程语言,可以用于开发各种类型的应用程序,包括桌面应用、Web应用、移动应用和游戏等。C#还提供了许多高级特性,如委托、事件、属性和泛型等,使得开发者可以...
    99+
    2023-08-08
  • visible是什么意思
    visible属性是一个布尔类型的值,通常用于控制对象、控件或窗口的可见性,当visible属性设置为true时,表示对象是可见的,它将在屏幕上显示出来,而当visible属性设置为false时,表示对象是隐藏的,它将不会在屏幕上显示。Vi...
    99+
    2023-08-10
  • pm是什么意思
    PM是Project Manager的缩写,意为项目经理,项目经理是一个管理项目的专业角色,在软件开发等领域中尤为重要,负责项目的规划、组织、管理和监督,需要具备多方面的能力,包括管理、沟通、领导和技术知识,确保项目按时交付、在预算范围内,...
    99+
    2023-08-10
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作