【问题标题】:Can YARN preempt Spark Driver?YARN 可以抢占 Spark Driver 吗?
【发布时间】:2020-05-28 03:29:27
【问题描述】:

谁能澄清一下 YARN 是否可以抢占 Spark 驱动程序,因为应用程序占用的资源超出了它的队列允许的范围?

这个问题来自于 prod 集群的场景:

  1. CDH 5.12,hadoop 2.6.0,使用公平调度器
  2. 队列 A = 50%,队列 B = 25%,队列 C = 25%
  3. 两个应用,比如 app1 和 app2 在队列 B 中运行,并且吃掉了所有集群资源。
  4. 一段时间后,app3 在队列 A 中启动并声明其资源
  5. app1 和 app2 杀死了它们的一些执行者(至少我看到了ERROR | SIGTERM handler | org.apache.spark.executor.CoarseGrainedExecutorBackend | RECEIVED SIGNAL TERM
  6. app1 打印有关 ApplicationMaster 死亡的错误消息: ERROR | SIGTERM handler | org.apache.spark.deploy.yarn.ApplicationMaster | RECEIVED SIGNAL TERM。 NM 日志只是说驱动程序容器已被杀死:Stopping container with container Id: app1_driver_containerId

我在文档中找不到任何证据表明 RM 可以杀死应用程序大师。文档说它礼貌地要求主人释放资源,我他们没有被释放然后它强行杀死容器。它可以杀死AM吗?

【问题讨论】:

  • AM 只是 YARN 的另一个容器,为什么不呢?
  • 我认为不会的原因是它写在 hortonworks 博客文章 (hortonworks.com/blog/…) 中。 Instead of killing thus-marked containers immediately to free resources, PreemptionMonitor inside the ResourceManager notifies ApplicationMasters (AM) so that AMs can take advanced actions before ResourceManager itself commits a hard decision。另见部分:“抢占对应用程序的影响”
  • 那么,您的yarn.resourcemanager.scheduler.monitor.enable 设置是什么,以及那里提到的其他属性?您确定该博文适用于您的 YARN 版本吗?
  • 我已经检查了博客文章中提到的属性,但没有找到它们,在 grepping 时我意识到我对使用的调度程序大错特错!真丢脸...,这是公平的调度程序,因为yarn.resourcemanager.scheduler.classorg.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler。所以我挖掘了一个错误的方向(。我已经为其他读者更新了问题。谢谢@cricket_007

标签: hadoop apache-spark hadoop-yarn


【解决方案1】:

简短的回答是肯定的,尽管有一张票可以添加配置以避免https://issues.apache.org/jira/browse/YARN-9537

【讨论】:

    猜你喜欢
    • 2016-05-02
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多