当前位置: 首页 > 知识库问答 >
问题:

对于纱线中的单个队列,如何将状态=运行中的spark应用程序数限制为1?

窦英武
2023-03-14

我有多个火花作业。通常我将我的火花作业提交给纱线,我有一个选项是--yarn_queue,它告诉它要进入哪个纱线队列。

但是,这些作业似乎在同一个队列中并行运行。有时,一个火花作业的结果是下一个火花作业的输入。我如何按顺序运行我的火花作业,而不是在同一个队列中并行运行?

我已经在这个页面上查看了容量调度器。但我能看到的最接近的东西是纱线的属性。调度程序。容量

如何将单个队列中处于状态=运行的应用程序数限制为1?

共有2个答案

谢清野
2023-03-14

来自https://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/FairScheduler.html:

Fair Scheduler允许默认情况下运行所有应用程序,但也可以通过配置文件限制每个用户和每个队列运行的应用程序数量。当用户必须一次提交数百个应用程序时,这可能很有用,如果一次运行太多应用程序会导致创建太多中间数据或切换太多上下文,则通常可以提高性能。限制应用程序不会导致任何后续提交的应用程序失败,只会在调度程序队列中等待,直到用户的一些早期应用程序完成。

具体来说,您需要配置:

maxRunningApps: limit the number of apps from the queue to run at once

例如。

<?xml version="1.0"?>
<allocations>
    <queue name="sample_queue">
      <maxRunningApps>1</maxRunningApps>
      <other options>
     </queue>
</allocations>
董品
2023-03-14

您可以在容量调度器配置中管理适当的队列一次运行一个任务。我建议为此使用ambari。如果您没有这样的机会,请应用指南的说明

 类似资料:
  • 我需要禁用hadoop集群中YARN应用程序的并行执行。现在,YARN有了默认设置,因此几个作业可以并行运行。我看不出这样做有什么好处,因为这两个工作都运行得比较慢。 我发现这个设置限制了应用程序的最大数量,但它同时影响提交和运行的应用程序(如文档中所述)。我想保持在队列中提交的应用程序,直到当前运行的应用程序没有完成。这怎么能做到呢?

  • 那么,这种架构的瓶颈在哪里?也许推送每条带有互斥体的消息是个坏主意?

  • 当线程可运行时,它可以运行,也可以不运行。有没有办法将它与? Java文档中线程的所有状态: JAVA公共类线程。状态 扩展枚举 线程状态。线程可以处于以下状态之一: 尚未启动的新线程处于此状态。 RUNNABLE在Java虚拟机中执行的线程处于此状态。 阻塞等待监视器锁定而被阻塞的线程处于此状态。 WAITING无限期等待另一个线程执行特定操作的线程处于此状态。 TIMED_WAITING等待等

  • 问题内容: 我有一个生产laravel应用程序和登台应用程序在同一服务器上运行。我正在运行redis,将其用作队列驱动程序。它们显然连接到不同的数据库。问题是从暂存应用程序推送到reds队列的作业是否会干扰生产db,反之亦然。 问题答案: 您可以设置Laravel用于Redis缓存的前缀。默认情况下为,因此所有密钥都存储为,并且Laravel在保存/获取时会考虑添加/删除此前缀的逻辑。 您可以在中

  • 我有一个程序,把10个线程推到一个向量中,每个线程在完成之前要打印出一个字符5次(第一个线程是'a',第二个线程是'B',等等)。我可以让它们一次全部运行(使用detach())或者一次运行一个(使用join())。现在我想使用互斥体将一次允许打印的线程数限制为2。我已经能够声明互斥体并将锁放在适当的位置,但我不确定如何应用这样的限制。有人对如何继续有什么想法吗?