yarn的工作

本文介绍了YARN作为Hadoop 2.0引入的资源调度器,如何从JobTracker分离并独立发展成为一个成熟且通用的调度框架。文章详细阐述了YARN的组成结构,包括ResourceManager和NodeManager的作用,以及它们如何协作完成任务调度。此外,还解释了Driver进程与ApplicationMaster进程的不同职责。
摘要由CSDN通过智能技术生成

在这里插入图片描述
如上图我简单的画了一个草图给大家用大白话解释一下yarn是干什么的,其实总结来说并没有大家常看的那么麻烦,那些都是最底层的,咱们虽然要知道,但是没有必要知道的那么详细,毕竟我们不是做yarn本身的研发

先给大家介绍一下yarn其实是一个资源调度器,它是Hadoop2.0之后提出来的一个组件,同时发展至今已然是一个很成熟的调度框架了,可以脱离Hadoop单独对其他框架提供支持,如Spark、Flink等
而Hadoop1.0的时候yarn的工作是一个叫做JobTracker的组件兼任的,但是这个组件随着Hadopp的发展它胜任的工作越来越繁杂,因此Hadoop2.0的时候被分离出来组成了yarn

yarn主要的组件是resourcemanager、nodemanager
resourcemanager位于yarn节点上,nodemanager在每个datanode上各一个,依靠着这样的方式yarn节点掌控着整个集群的资源

在我们提交一个MapReduce任务对数据做处理的时候,yarn并不是直接接受这个任务,而是先由一个Driver进程对数据进行一个规划,其中设计到分区等,之后同任务运行时所需要的资源一起向yarn发出任务申请,yarn会返回一个application_id,这个id对应的不止是任务的编号,还表示了任务提交的临时路径,它存在的意义就是保存这次任务而已,如果有心的朋友就会发现我们在空白的hdfs状态下,用Hadoop跑一个MapReduce任务之后会生成一个或两个路径,那个路径就是现在我说的路径

yarn接受任务的形式是Task,任务提交时启动的driver进程会把任务包装成一个task向yarn提交,yarn会把接受的Task放入自己的调度队列中,而这个任务的唯一标识就是之前生成的Application_id,有兴趣了解调度队列的可以看看
https://blog.csdn.net/dudadudadd/article/details/111604805

在yarn调度队列中,当一个Task要执行时,yarn会和nodemanager联系找到一个有资源的Datanode将Task交给它,而当datanode接受到Task时,会在自身上针对于这个任务启动一个applicationmaster进程,这个进程会承包这个Task在运行时所需要的一切动作,比如向yarn申请资源,同时它的生命也随着Task开始而开始,Task结束而结束

最后对于applicationmaster这个节点有可能有一些争议,就是明明有Driver了,为什么还要存在一个applicationmaster呢?
其实这两个线程不冲突,applicationmaster在整个Task的执行中负责的主要是和yarn之间为Task的运行而做的资源调配,而Driver节点负责的是偏向于合并结果等善后的问题,地位上大家可以理解为applicationmaster是Driver的大哥大,但是要注意我最后说的这个driver和任务开始进行规划的不是一个,他们两个虽然是同一类进程,但是他们所完成的任务和起动的时间也不一样,我最后说的这个driver,是在applicationmaster启动之后,跟随启动的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值