加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

Yarn 新手指南

发布时间:2023-04-25 13:57:51 所属栏目:教程 来源:
导读:Yarn 对你的代码来说是一个包管理器, 你可以通过它使用全世界开发者的代码,或者分享自己的代码。 Yarn 做这些快捷、安全、可靠,所以你不用担心什么。

通过Yarn你可以使用其他开发者针对不同问题的解决方案,使
Yarn 对你的代码来说是一个包管理器, 你可以通过它使用全世界开发者的代码,或者分享自己的代码。 Yarn 做这些快捷、安全、可靠,所以你不用担心什么。

通过Yarn你可以使用其他开发者针对不同问题的解决方案,使自己的开发过程更简单。 使用过程中遇到问题,你可以将其上报或者贡献解决方案。一旦问题被修复,Yarn会更新保持同步。

Yarn基本架构以及各个组件负责功能
    Yarn在整体上看还是采用了和Hadoop1.x一样的Master/Slave结构(横向扩展混杂Slave/Slave结构),在整个Yarn资源管理系统当中,ResourceManager作为Master,各个节点的NodeManager作为Slave。各个节点上NodeManager的资源由ResourceManager统计进行管理和调度。当应用程序提交后,会有一个单独的Application来对该应用程序进行跟踪和管理,同时该Application还会为该应用程序想Resource申请资源,并要求NodeManager启动该应用程序占用一定资源的任务。

基本组件介绍ResourceManager
    ResourceManager是Yarn的核心组件,主要由任务调度器(YarnScheduler)和应用程序管理器(Applications Manager)组成。其主要功能是负责系统资源的管理和分配。

任务调度器(YarnScheduler)

    任务调度器根据系统资源容量以及管理员对队列的限制条件,按照一定的策略将资源分配给正在运行的应用程序。相比于Hadoop1.x而言,Yarn为任务调度器做了减负,任务调度器不再负责跟踪和监控应用的执行状态,也不负责重新启动因为应用执行失败或者硬件故障而运行失败的任务,这些任务都有该应用程序对应的ApplicationMaster来负责了,这使得YarnScheduler的功能更加纯粹。另外,任务调度器和Hadoop1.x一样也是一个热插拔模块,你可以自定义自己的任务调度器,同样你也可以直接使用其他任务调度器,如,Fair Scheduler或者Capacity Scheduler。

应用程序管理器(Applications Manager)

    应用程序管理器,负责管理整个系统中所有应用程序,包括应用程序提交、向任务调度器申请资源启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动它。

    ResourceManager中还包含了其他组件,如ResourceTrackerService用来直接处理心跳,NMLivelinessMonitor用来监控NodeManager,NodesListManager 提供NodeManager的黑白名单等等。

ApplicationMaster(AM)
    每当用户提交了一个应用程序就会为这个应用程序产生一个对应的ApplicationMaster,并且这个这个单独进程是在其中一个子节点上运行的。它的主要功能:为应用向ResourceManager申请资源、在job对Task实行调度、与NodeManager通信以启动或者停止任务、监控所有任务的运行情况,并且在任务失败的情下,重新为任务申请资源并且重启任务、负责推测任务的执行、当ApplicationMaster向ResourceManager注册后,ApplicationMaster可以提供客户端查询作业进度信息等。

NodeManager(NM)
    NM是每个子节点上的资源和任务管理器,一方面,它会定向通过心跳信息向RM汇报本节点上的资源使用情况和各个Container的运行情况;另一方面,它会接收并且处理来自AM的Container启动和停止的各种请求。它的能有点像Hadoop1.x中的TaskTracker。

Container
    Container是Yarn中对系统资源的抽象,同时它也是系统资源分配的基本单位,它封装节点上多维度资源,其中包括cpu、内存、磁盘、网络等。Yarn会为每个任务分配一个Container,并且该任务只能够使用该Container中所描述的资源。值得关注的的是,Yarn中的Container和MRv1中的Slot是完全不同的,Container是一个动态的资源划分单位,它是根据实际提交的应用程序所需求的资源自动生成的,换句话说,Container其里边所描述的cpu、内存等资源是根据实际应用程序需求而变的。而Slot是一个静态的资源抽象单位,每一个同类型的Slot所描述的资源信息都是一样的。

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章