大数据计算引擎 EasyMR 如何简单高效管理 Yarn 资源队列

这篇具有很好参考价值的文章主要介绍了大数据计算引擎 EasyMR 如何简单高效管理 Yarn 资源队列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

设想一下,作为一个开发人员,你现在所在的公司有一套线上的 Hadoop 集群。A部门经常做一些定时的 BI 报表,B部门则经常使用软件做一些临时需求。那么他们肯定会遇到同时提交任务的场景,这个时候到底应该如何分配资源满足这两个任务呢?是先执行A的任务,再执行B的任务,还是同时跑两个?

如果你存在上述的困惑,可以多了解一些 Yarn 的资源调度器。

Yarn 的三种调度器

从 Hadoop2 开始,官方把资源管理单独剥离出来,主要是为了考虑后期作为一个公共的资源管理平台,任何满足规则的计算引擎都可以在它上面执行。Yarn 作为一款 Hadoop 集群的资源共享,不仅可以跑 MapReduce,还可以跑 Spark,Flink。

在 Yarn 框架中,调度器是一块很重要的内容。有了合适的调度规则,就可以保证多个应用在同一时间有条不紊的工作。

最原始的调度规则就是 FIFO,即按照用户提交任务的时间来决定哪个任务先执行,但是这样很可能一个大任务独占资源,其他的资源需要不断的等待,也可能一堆小任务占用资源,大任务一直无法得到适当的资源,造成饥饿。所以 FIFO 虽然很简单,但是并不能满足我们的需求。

如下图所示,在 Yarn 中有三种调度器可以选择:FIFO Scheduler,Capacity Scheduler,Fair Scheduler。

大数据计算引擎 EasyMR 如何简单高效管理 Yarn 资源队列

FIFO Scheduler

把应用按提交的顺序排成一个先进先出队列,在进行资源分配的时候,先给队列中最头部的应用进行分配资源,等到最头部的应用需求满足后再给下一个分配,以此类推。

FIFO Scheduler 是最简单也是最容易理解的调度器,它不需要任何配置,但不适用于共享集群中。大的应用可能会占用所有集群资源,从而导致其它应用被阻塞。

Capacity 调度器

允许多租户安全的共享集群资源,提供的核心理念就是 Queues(队列),它支持多个队列,每个队列可配置一定的资源量,以确保在其他 queues 允许使用空闲资源之前,资源可以在一个组织的 sub-queues 之间共享,且每个队列采用 FIFO 调度策略。为了在共享资源上,提供更多的控制和预见性,applications 在容量限制之下,可以及时的分配资源。

Fair 调度器

在 Fair 调度器中,我们不需要预先占用一定的系统资源,Fair 调度器会为所有运行的 job 动态的调整系统资源。当第一个大 job 提交时,只有这一个 job 在运行,此时它获得了所有集群资源;当第二个小任务提交后,Fair 调度器会分配一半资源给这个小任务,让这两个任务公平的共享集群资源。

需要注意的是,从第二个任务提交到获得资源会有一定的延迟,因为它需要等待第一个任务释放占用的 Container。小任务执行完成之后也会释放自己占用的资源,大任务又获得了全部的系统资源。最终的效果就是 Fair 调度器既得到了高的资源利用率又能保证小任务及时完成。

EasyMR 如何管理 Yarn 资源队列

最原始的调度规则就是 FIFO,即按照用户提交任务的时间来决定哪个任务先执行,但是这样可能会导致一个大任务独占资源,其他的资源需要不断的等待,也可能导致一堆小任务占用资源,大任务一直无法得到适当的资源,造成饥饿。

所以 FIFO 虽然很简单,但是并不能满足我们的需求。最常使用的是容量调度策略,但是运维人员在配置容量队列时,需要考虑队列资源利用率,队列的状态,修改完成后,亦无法校验配置是否正确。

EasyMR 出于简单高效原则,开放了资源队列管理功能。

以容量调度为例,为大家简单演示 EasyMR 中队列的使用。假设公司有个大数据部门,该部门下有个做数据同步的小组,队列树形图如下:

root 
├── bigdata
    |---dataSync

要创建这样层次的队列,首先需要在父级别下面创建 bigdata 队列,然后在 bigdata 下面划分一个子队列 dataSync,下文进行详细介绍。

创建队列

首先创建父队列 bigdata,设置最小容量20%,最大容量50%。

大数据计算引擎 EasyMR 如何简单高效管理 Yarn 资源队列

在父队列中添加 bigdata 队列名称。

 <property>
   <!-- root队列中有哪些子队列-->
   <name>yarn.scheduler.capacity.root.queues</name>
   <value>default,bigdata</value>
   <description></description>
 </property>

设置 bigdata 的容量调度配置。

   <property>
     <!-- bigdata队列占用的容量百分比-->
     <name>yarn.scheduler.capacity.root.bigdata.capacity</name>
     <value>20</value>
     <description></description>
   </property>
   <property>
     <!-- root队列中bigdata队列占用的容量百分比的最大值-->
     <name>yarn.scheduler.capacity.root.bigdata.maximum-capacity</name>
     <value>50</value>
     <description></description>
   </property>
   <property>
     <!-- queue容量的倍数,用来设置一个user可以获取更多的资源。默认值为1-->
     <name>yarn.scheduler.capacity.root.bigdata.user-limit-factor</name>
     <value>1</value>
     <description></description>
   </property>
   <property>
     <!--设置bigdata队列的状态-->
     <name>yarn.scheduler.capacity.root.bigdata.state</name>
     <value>RUNNING</value>
     <description></description>
   </property>

创建子队列

在 bigdata 父队列下面,选择创建子队列,设置最小容量10%,最大容量30%。

大数据计算引擎 EasyMR 如何简单高效管理 Yarn 资源队列

在 bigdata 队列中添加 dataSync 队列名。

   <property>
     <!-- bigdata队列中有哪些子队列-->
     <name>yarn.scheduler.capacity.root.bigdata.queues</name>
     <value>dataSync</value>
     <description></description>
   </property>

设置 dataSync 队列的容量调度配置。

   <property>
     <!-- bigdata队列dataSync子队列的容量百分比-->
     <name>yarn.scheduler.capacity.root.bigdata.dataSync.capacity</name>
     <value>10</value>
     <description></description>
   </property>
   <property>
     <!-- bigdata队列中bigdata队列占用的容量百分比的最大值-->
     <name>yarn.scheduler.capacity.root.bigdata.dataSync.maximum-capacity</name>
     <value>30</value>
     <description></description>
   </property>
   <property>
     <!-- queue容量的倍数,用来设置一个user可以获取更多的资源。默认值为1-->
     <name>yarn.scheduler.capacity.root.bigdata.dataSync.user-limit-factor</name>
     <value>1</value>
     <description></description>
   </property>
   <property>
     <!--设置子队列dataSync队列的状态-->
     <name>yarn.scheduler.capacity.root.bigdata.dataSync.state</name>
     <value>RUNNING</value>
     <description></description>
   </property>

查看队列

创建完成后,可以在 EasyMR 资源队列查看队列详情。

大数据计算引擎 EasyMR 如何简单高效管理 Yarn 资源队列

在 EasyMR 创建完成后,也可以在 yarn web 管理页面查看队列创建详情。

大数据计算引擎 EasyMR 如何简单高效管理 Yarn 资源队列

至此,Yarn 的一个简单容量调度就创建完成了。

《数栈产品白皮书》:https://www.dtstack.com/resources/1004?src=szsm

《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001?src=szsm

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szbky

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术qun」,交流最新开源技术信息,qun号码:30537511,项目地址:https://github.com/DTStack文章来源地址https://www.toymoban.com/news/detail-687307.html

到了这里,关于大数据计算引擎 EasyMR 如何简单高效管理 Yarn 资源队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • EasyMR6.2 全面解读:四大功能深度优化,解锁全新大数据处理和计算体验

    在刚刚过去的2024春季发布会上,袋鼠云带来了数栈产品V6.2版本的全新发布。其中,EasyMR 作为数栈V6.2中的一项关键能力,代表了袋鼠云对大数据生态的深入理解和持续创新。 EasyMR(后文统称EMR)是袋鼠云基于 Hadoop、Hive、Spark、Flink、HBase 等开源组件,构建的弹性计算引擎,

    2024年04月22日
    浏览(27)
  • 通过 Lucene.Net 支持的 .NET 索引和搜索引擎的高效使用与探索:Examine 的简单索引与搜索数据应用以及其可扩展性分析

    在当前的技术环境中,搜索和索引数据变得越来越重要,尤其是在处理大量数据时。这就使得我们需要一种能够快速、精确、高效地索引和搜索数据的工具。在本文中,我们将深入探讨一种用于 .NET 的索引和搜索引擎——Examine,这是一个封装了 Lucene.Net 的库,它能使我们更方

    2024年02月16日
    浏览(49)
  • 云计算与大数据平台:实现高效的数据驱动的供应链管理

    在当今的数字时代,数据已经成为企业竞争力的重要组成部分。供应链管理是企业运营中不可或缺的环节,其中数据驱动的供应链管理尤其重要。云计算与大数据平台在这个过程中发挥着关键作用,帮助企业实现高效的供应链管理。本文将从背景、核心概念、核心算法原理、

    2024年04月28日
    浏览(35)
  • Airflow大揭秘:如何让大数据任务调度变得简单高效?

    介绍:Airflow是一个开源的、用于创建、调度和监控数据管道的工作流平台。这个平台使用Python编写,并通过有向无环图(Directed Acyclic Graph, DAG)来管理任务流程,使得用户不需要知道业务数据的具体内容,只需设置任务之间的依赖关系,即可实现任务的自动调度。 在具体应

    2024年01月20日
    浏览(47)
  • 【表达式引擎】简单高效的轻量级Java表达式引擎:Aviator

    Aviator 是一个高性能、、轻量级的表达式引擎,支持表达式动态求值。其设计目标为轻量级和高性能,相比于 Groovy 和 JRuby 的笨重, Aviator 就显得更加的小巧。与其他的轻量级表达式引擎不同,其他的轻量级表达式引擎基本都是通过解释代码的方式来运行,而 Aviator 则是直接

    2024年02月09日
    浏览(58)
  • 人工智能与云计算:如何实现医疗数据的高效共享

    作者:禅与计算机程序设计艺术 随着医疗数据量的增加、消费需求的提升、以及国际化的趋势加剧,数据共享成为医疗行业的一个重要方向。传统的数据共享模式主要依靠中心化共享平台(例如EHR)或联邦性数据共享框架(例如HL7),但在复杂多样的医疗信息环境中难以实现

    2024年02月15日
    浏览(49)
  • 云计算与大数据分析:如何实现高效的数据清洗与预处理

    随着互联网的普及和数据的快速增长,数据分析和处理成为了企业和组织中的重要组成部分。大数据分析是指利用大量数据来发现新的信息和洞察,从而为企业和组织提供决策支持。云计算是一种基于互联网的计算资源共享和分配模式,它可以让企业和组织更加高效地利用计

    2024年04月11日
    浏览(45)
  • CSR格式如何更新? GES图计算引擎HyG揭秘之数据更新

    摘要: HyG图计算引擎采用CSR格式来存储图的拓扑信息,CSR格式可以将稀疏矩阵的存储空间压缩,进而大大降低图的存储开销,同时具备访问效率高、格式易转化等优点。 本文分享自华为云社区《CSR格式如何更新? GES图计算引擎HyG揭秘之数据更新》,作者: π 。 HyG图计算引

    2024年02月09日
    浏览(68)
  • 流式计算中的多线程处理:如何使用Kafka实现高效的实时数据处理

    作者:禅与计算机程序设计艺术 Apache Kafka 是 Apache Software Foundation 下的一个开源项目,是一个分布式的、高吞吐量的、可扩展的消息系统。它最初由 LinkedIn 开发并于 2011 年发布。与其他一些类似产品相比,Kafka 有着更强大的功能和活跃的社区支持。因此,越来越多的人开始使

    2024年02月12日
    浏览(63)
  • 如何让智能搜索引擎更灵活、更高效?

    随着互联网的发展和普及,搜索引擎已经成为人们获取信息、解决问题的主要工具之一。 然而,传统的搜索引擎在面对大数据时,往往存在着搜索效率低下、搜索结果精准度不够等问题。 为了解决这些问题,越来越多的企业开始采用智能搜索技术,提升搜索效率和搜索结果

    2024年02月12日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包