首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >长时间运行作业和多个小作业的EMR资源优化/利用

长时间运行作业和多个小作业的EMR资源优化/利用
EN

Stack Overflow用户
提问于 2020-03-18 12:31:14
回答 1查看 833关注 0票数 3

我的用例:

  • 我们有一个长期运转的星火工作。这里呼叫后,LRJ。这项工作每周执行一次。
  • 我们有多个可以随时运行的小作业。这些工作比长期的工作有更高的优先级。

为了解决这个问题,我们创建了纱线队列,如下所示:

创建用于资源管理的纱线队列。为长时间运行的作业配置Q1队列,为小型正在运行的作业配置Q2队列。

代码语言:javascript
复制
Config:
     Q1 : capacity = 50% and it can go upto 100%
          capacity on CORE nodes = 50% and maximum 100%   
     Q2 : capacity = 50% and it can go upto 100%
          capacity on CORE nodes = 50% and maximum 100% 

我们面临的问题:

当LRJ正在进行的时候,它获得了所有的资源。当LRJ获得了所有资源时,多个正在运行的小作业在等待。一旦集群规模扩大,新资源可用,小的正在运行的作业就会获得资源。但是,由于集群需要时间来扩展活动,这就造成了分配资源给这些作业的严重延迟。

更新1:我们尝试过按纱线文档使用maximum-capacity配置,但它不像我在另一个问题这里中发布的那样起作用

EN

回答 1

Stack Overflow用户

发布于 2020-03-19 12:53:51

经过更多的分析,其中涉及到与一些无名英雄的讨论,决定根据我们的用例在纱线队列上应用抢占。

当发生下列事件顺序时,将抢占Q1队列上的作业:

  1. Q1队列使用的容量超过指定的容量(例如: LRJ作业使用的资源比队列上指定的资源多)。
  2. 突然,Q2队列上的作业被调度(例如:突然触发了多个正在运行的小作业)。

要理解抢占性,请阅读

下面是我们在AWS CloudFormation脚本中用于启动EMR集群的示例配置:

容量-调度程序配置:

代码语言:javascript
复制
        yarn.scheduler.capacity.resource-calculator: org.apache.hadoop.yarn.util.resource.DominantResourceCalculator
        yarn.scheduler.capacity.root.queues: Q1,Q2
        yarn.scheduler.capacity.root.Q2.capacity: 60
        yarn.scheduler.capacity.root.Q1.capacity: 40
        yarn.scheduler.capacity.root.Q2.accessible-node-labels: "*"
        yarn.scheduler.capacity.root.Q1.accessible-node-labels: "*"
        yarn.scheduler.capacity.root.accessible-node-labels.CORE.capacity: 100
        yarn.scheduler.capacity.root.Q2.accessible-node-labels.CORE.capacity: 60
        yarn.scheduler.capacity.root.Q1.accessible-node-labels.CORE.capacity: 40
        yarn.scheduler.capacity.root.Q1.accessible-node-labels.CORE.maximum-capacity: 60
        yarn.scheduler.capacity.root.Q2.disable_preemption: true
        yarn.scheduler.capacity.root.Q1.disable_preemption: false

纱线.现场配置:

代码语言:javascript
复制
        yarn.resourcemanager.scheduler.class: org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
        yarn.resourcemanager.scheduler.monitor.enable: true
        yarn.resourcemanager.scheduler.monitor.policies: org.apache.hadoop.yarn.server.resourcemanager.monitor.capacity.ProportionalCapacityPreemptionPolicy
        yarn.resourcemanager.monitor.capacity.preemption.monitoring_interval: 2000
        yarn.resourcemanager.monitor.capacity.preemption.max_wait_before_kill: 3000
        yarn.resourcemanager.monitor.capacity.preemption.total_preemption_per_round: 0.5
        yarn.resourcemanager.monitor.capacity.preemption.max_ignored_over_capacity: 0.1
        yarn.resourcemanager.monitor.capacity.preemption.natural_termination_factor: 1

有了以上所述,您必须根据用例在特定队列上指定作业。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60739639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档