gpt4 book ai didi

apache-spark - EMR 中的资源优化/利用,用于长时间运行的作业和多个小型运行作业

转载 作者:行者123 更新时间:2023-12-02 18:19:57 24 4
gpt4 key购买 nike

我的用例:

  • 我们有一个长期运行的 Spark 作业。在此之后调用,LRJ。该作业每周运行一次。
  • 我们有多个随时可以运行的小型作业。这些作业比长期运行的作业具有更高的优先级。

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

为资源管理创建了 YARN 队列。为长时间运行的作业配置 Q1 队列,为小型运行的作业配置 Q2 队列。

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:我们已尝试根据 YARN docs 使用 maximum-capacity 配置但它没有像我在其他问题中发布的那样工作 here

最佳答案

通过更多分析,包括与一些无名英雄的讨论,我们决定根据我们的用例在 YARN 队列上应用抢占

当以下事件发生时,Q1 队列中的作业将被抢占:

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

要了解抢占,请阅读 thisthis

以下是示例配置,我们在 AWS CloudFormation 脚本中使用它来启动 EMR 集群:

容量调度器配置:

        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

yarn 站点配置:

        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

有了上面的内容,您必须根据您的用例在特定队列上指定您的作业。

关于apache-spark - EMR 中的资源优化/利用,用于长时间运行的作业和多个小型运行作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60739639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com