2023学年完整公开课版yarn的调度2_第1页
2023学年完整公开课版yarn的调度2_第2页
2023学年完整公开课版yarn的调度2_第3页
2023学年完整公开课版yarn的调度2_第4页
2023学年完整公开课版yarn的调度2_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

yarn的调度主要内容启动公平调度2队列配置抢占延迟调度3一、启动公平调度4启动公平调度公平调度器的使用由属性yarn.resourcemanager.scheduler.class的设置决定。默认是使用容量调度器(在一些Hadoop分布式项目,如CDH中是默认使用公平调度器),如果要使用公平调度器需要将yarn.site.xml文件中的yarn.resourcemanager.scheduler.class设置为公平调度器的完全限定名:org.apache.hadoop.yarn.server.resourcemanager.schduler.fair.FairScheduler。5一、队列配置6队列配置广通过一个名为fair-scheduler.xml的分配文件对公平调度器进行配置,该文件位于类路径下。(可以通过设置属性yarn.scheduler.fair.allocation.file来修改文件名)。当没有该分配文件时,公平调度器的工作策略同先前所描述的一样:每个应用放置在一个以用户名命名的队列中,队列是在用户提交第一个应用时动态创建的。通过分配文件可以为每个队列进行配置。这样可以对容量调度器支持的层次队列进行配置。例如可以像为容量调度器所做的那样,使用范例如下所示的分配文件定义prod和dev。7队列配置8队列配置队列的层次使用嵌套queue元素来定义。所有的队列都是root队列的孩子,即使实际上并没有嵌套进rootqueue元素里。这里把dev队列又划分成eng和science两个队列。队列中有权重元素用于公平共享计算。在这个例子中当集群资源按照40:60的比例分配给prod和dev时,集群分配被认为是公平的。eng和science队列没有指定权重因此他们会被平均分配。权重并不是百分百,例子中是为了简单起见使用了相加和为100的两个数。也可以为prod和dev队列分别指定2和3的权重,在效果上是一样的。当设置权重时,记住要考虑默认队列和动态创建的队列(例如以用户名命名的队列)。虽然没有在分配文件中为他们指定权重,但他们仍有值为1的权重。9队列配置每个队列可以有不同的调度策略。队列的默认调度策略可以通过顶层元素defaultQueueSchedulingPolicy进行设置,如果省略默认使用公平调度。尽管名称是公平,公平调度器也支持队列级别的FIFO策略,以及DominantResourceFairness(drf)策略。队列的调度策略可以被该队列的schedulingPolicy元素指定的策略覆盖。在上述例子中,由于我们希望每个生产性作业能够顺序运行且在最短可能的时间内结束,所有prod队列使用了FIFO调度策略。值得注意的是,在prod和dev队列之间,eng和science队列之间及内部划分资源仍然使用了公平调度。10三、抢占11抢占在一个繁忙的集群中,当作业被提交给一个空队列时,作业不会立刻启动,直到集群上已经运行的作业释放了资源。为了使作业从提交到执行所需的时间可预测,公平调度器支持抢占(preemption)功能。所谓抢占就是允许调度器终止那些占用资源超过了其公平共享份额的队列的容器,这些容器资源释放后可以分配给资源数量低于应得份额的队列。注意,抢占会降低整个集群的效率,因为被终止的containers需要重新执行。通过将yarn.scheduler.fair.preemption设置为true,可以全面启用抢占功能。有两个相关的抢占超时设置:一个用于最小共享另一个用于公平共享,两者设定时间均为秒级。默认情况下,两个超时参数均不设置。所以为了允许抢占容器,需要至少设置其中一个超时参数。12抢占如果队列在minimumsharepreemptiontimeout指定的时间内未获得被承诺的最小共享资源,调度器就会抢占其他容器。可以通过分配文件中的顶层元素defaultMinSharePreemptionTimeout为所有队列设置默认的超时时间,还可以通过设置每个队列的minSharePreemptionTimeout元素来为单个队列指定超时时间。类似,如果队列在fairsharepreemptiontimeout指定的时间内未获得的资源仍然低于其公平共享份额的一半,那么调度器就会抢占其他容器。可以通过分配文件中的顶层元素defaultFairSharePreemptionTimeout为所有队列设置默认的超时时间,还可以通过设置每个队列的fairSharePreemptionTimeout元素来为单个队列指定超时时间。通过设置defaultFaireSharePreemptionThreshold和fairSharePreemptionThreshold(针对每个队列)可以修改超时阈值,默认是0.5。13四、延迟调度14延迟调度所有的YARN调度器都试图以本地请求为重。在一个繁忙的集群上,如果一个应用请求某个节点,那么极有可能此时有其他容器正在该节点上运行。显而易见的处理是立刻放宽本地性需求,在同一机架中分配一个容器。然而通过实践发现,此时如果等待一小段时间(不超过几秒),能够戏剧性的增加在所请求的节点上分配到一个容器的机会,从而可以提高集群的效率。这个特性称之为延迟调度。容量调度器和公平调度器都支持延迟调度。YARN中的每个节点管理器周期性的(默认每秒一次)向资源管理器发送心跳请求。心跳中携带了节点管理器中正运行的容器、新容器可用的资源等信息,这样对于一个计划运行一个容器的应用而言,每个心跳就是一个潜在的调度机会。15延迟调度对于容量调度器可以通过设置yarn.scheduler.capacity.node-locality-delay来配置延迟调度。设置为正整数表示调度器在放松节点限制、改为匹配同一机架上的其他节点前,准备错过的调度机会的数量。公平调度器也使用调度机会的数量来决定延迟时间,尽管是使用集群规模的比例来表示这个值。例如将yarn.scheduler.fair.locality.threshold.node设置为0.5,表示调度器在接受同一机架中的其他节点之间,将一直等待直到集群中的一半节点都已经给过调度机会。还有个相关的属性yarn.scheduler.fair.locality.threshold.rack表示在接受另一个机架替代所申请的机架之前需要等待的时长阈值。16延迟调度对于单一类型资源,如内存的调度,容量或公平性的概念很容易确定。例如两个用户正在运行应用,可以通过度量每个应用使用的内存来比较两个应用。然而当有多种资源类型需要调度时,事情就会变得复杂。例如如果一个用户的应用对CPU的需求量很

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论