Yarn资源调度器

Yarn资源调度器

Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序相当于操作系统之上的应用程序

Yarn基本架构

Yarn主要由ResourceManager,NodeManager,ApplicationMaster和Container等组件构成
在这里插入图片描述

  • YARN 是一个资源管理、任务调度的框架,主要包含三大模块:ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)。
  • ResourceManager 负责所有资源的监控、分配和管理。
  • ApplicationMaster 负责每一个具体应用程序的调度和协调。
  • NodeManager 负责每一个节点的维护。
  • 对于所有的 applications,RM 拥有绝对的控制权和对资源的分配权。而每个 AM 则会和RM 协商资源,同时和 NodeManager 通信来执行和监控 task。

Yarn工作机制

在这里插入图片描述

  1. 当我们执行一个diver调用waitForCompletion方法时,Mr会向ResourceManager申请一个Application(也就是jobID)
  2. ResourceManager分配一个Application资源提交路径以及application_id
  3. 有了这个id,job就知道提交时所用的临时文件,提交到哪个路径下,并在临时申请的工作目录里面生成一些文件(jar包,切片信息,和配置文件),提交这个job运行所需要的资源
  4. 在工作目录中提交完所用资源之后,Mr会向ResourceManager申请运行AppMaster
  5. 通过申请之后,ResourceManager会将job包装成一个Task,然后将此Task放入调度队列中,有自己的调度规则
  6. 当轮到此Task执行任务时,ResourceManager会寻找一个NodeManager负责接收这个Task
  7. 当NodeManager领取到Task任务后,创建Container容器,并由Appmaster来运行这个Container
  8. Appmaster开始运行job时,会去临时工作目录中下载响应的job资源
  9. 资源下载完毕后,根据job.split(切片信息),Appmaster向ResourceManager申请响应数量的MapTask容器,此申请同样进入调度队列,等待调度
  10. 调度完成后,会以相同方式启动响应数量的Container,来准备运行对应MapTask
  11. 此时Appmaster会向这些MapTask发送启动脚本与jar包,紧接着MapTask根据对应的执行jar包来执行任务
  12. MapTask执行完毕过程中,Appmaster会不停询问执行进度,进度100%后,生成map的结果数据。接着申请相应的Container来运行ReduceTask
  13. 每个ReduceTask接收MapTask的结果数据,对数据进行处理,处理完成后,生成最终结果数据
  14. 执行结果生成后各个Container会被RM回收,而Appmaster会向RM申请自杀

资源调度器

目前,Hadoop资源调度器主要由三种:FIFO,Capacity Scheduler和Fair Scheduler,默认的资源调度器时Capacity Scheduler

FIFO调度器

先进先出调度器,在进行资源分配的时候,先给队列中最开始的应用进行分配资源,待最开始的应用需求满足后再给下一个分配,以此类推。但是大的应用可能会占用所有集群资源,这就导致其它应用被阻塞。

容量调度器(Capacity Scheduler)

支持多个队列,每个队列可以配置一定的资源量,每个队列采用FIFO调度策略。

为了防止同一个任务作业独占列队中的资源,该调度器会对同一任务提交所占资源量进行限定

  • 首先,计算每个列队中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值最小的列队(最闲的)
  • 其次按照任务优先级与提交时间顺序,同时考虑用户资源量限制和内存限制对列队内任务排序

公平调度器(Fair Scheduler)

公平调度是一种对于全局资源,对于所有应用作业来说,都均匀分配的资源分配方法。YARN有能力调度多种资源类型。默认情况,公平调度器FairScheduler基于内存来安排公平调度策略。也可以配置为同时基于内存和CPU来进行调度,这样情况下需要使用由Ghodsi开发的Dominant Resource Fairness进行。当只有一个单一应用作业运行时,这个应用可以独占整个集群。当其他应用作业提交到集群时,空出来的资源将分配给新的应用,最终所有的应用作业会平分集群资源。不像Hadoop的默认调度器,它只将任务构造一个应用队列,公平调度器会在不饿死长周期作业的同时,优先让短周期作业先运行完成。在一组用户中共享集群也是合理的。最终,公平调度策略可以和应用优先级结合起来工作,优先级是一组权重值,资源会按照这个权重比例来分配给每个应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
Hadoop YARN是Hadoop的下一代集群资源管理系统,它将集群资源划分为容,通过资源调度来分配和管理这些容资源调度的配置对于集群的性能和资源利用率至关重要。 首先,需要配置YARN调度类型。目前YARN支持两种调度:容量调度和公平调度。容量调度将集群资源按比例分配给不同的队列,每个队列有固定的资源容量;而公平调度资源动态分配给各个应用程序,根据应用程序的运行状况动态调整资源分配。 其次,需要配置队列的属性。队列属性包括队列名称、资源容量、资源限制等。资源容量指定了每个队列可以使用的最大资源数量,资源限制是为了避免某个队列占用过多资源而导致其他队列无法正常运行。 另外,还可以配置调度的策略。调度策略根据不同的需求来决定资源的分配方式,比如公平策略会尽量保持各个应用程序获得相同的资源量,而容量策略则会按照预先设定的比例分配资源。 此外,还需要配置队列的优先级。队列优先级可以保证某个队列在资源不足时获得更多的资源,以确保高优先级的应用程序能够正常运行。 最后,还可以配置一些其他参数,例如最大容数、最大AM资源比例等。这些参数可以根据具体的需求进行调整,以优化资源管理调度效果。 总之,Hadoop YARN资源调度的配置需要根据集群的实际情况和需求进行灵活的调整,以实现高效的资源管理调度

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值