0

我一直在尝试使用 YARN 资源队列通过控制任何给定时间的作业数量(我只有 MR 作业,没有其他 YARN 应用程序)来控制争用。我的情况是——

我有一个接受用户请求并运行一些报告(作为 MR 作业)的服务。这些工作有时会很耗时,在高峰期,这些工作会争夺资源,过多的共享意味着没有一项工作能取得体面的进展。我正在尝试最小化在任何给定时间可以在队列上运行的报告数量。

我可以通过将队列的最大运行应用程序设置为所需值来完成其中的一部分。现在,我可以将 MR 应用程序/作业提交到集群,并且在任何给定时间只运行(假设为“n”)作业。现在,问题是,没有办法在同一个队列中抢占任务(或者我不知道有一个)。我希望我能够以这样的方式将作业提交到这个队列,当有一个作业时,它占据所有队列,当有 2 个作业时,第一个作业的一些任务被杀死并且两个作业相等资源和第三个工作来进一步划分资源等等(基本上是 FairShareScheduler 与抢占一起工作的方式,但在一个队列中而不是多个队列中)。

这可能吗?我现在只有一个用户(我的服务)提交作业。我可以将我的服务的用户传播到集群(我不喜欢,但如果没有其他方法可以这样做),以便基于用户创建子队列。但是我不知道如何获得我想要的行为,因为有很多用户并且我不确定如何在不知道队列名称的情况下为每个队列设置限制(权重)(将在提交作业时创建) .

提前感谢您的帮助。

4

1 回答 1

1

我发现不可能抢占同一个队列中的容器。我妥协了。

于 2016-06-28T01:00:17.047 回答