YARN:控制作业的并发性
YARN: Controlling concurrency of jobs
我一直在尝试使用 YARN 资源队列在任何给定时间通过控制作业数量(我只有 MR 作业,没有其他 YARN 应用程序)来控制争用。我的情况是 -
我有一项服务可以接受来自用户的请求和 运行s 一些报告(作为 MR 作业)。这些工作有时会很耗时,在高峰期,这些工作会争夺资源,过多的共享意味着没有一个工作能取得像样的进展。我正在尝试尽量减少在任何给定时间队列中可以 运行 的报告数量。
我可以通过将队列的最大 运行ning 应用程序设置为所需值来完成此操作的一部分。现在,我可以在任何给定时间向集群提交 MR apps/jobs,并且只提交(比如说 'n')作业 运行。现在,问题是,没有办法抢占同一个队列中的任务(或者我不知道)。我希望我能够以这样的方式向这个队列提交作业:当有一个作业时,它占据了所有队列,当有 2 个作业时,第一个作业的一些任务被杀死并且两个作业都相等资源和第三个工作进一步划分资源等等(基本上是 FairShareScheduler 使用抢占的方式,但在一个队列而不是多个队列中)。
这可能吗?我现在只有一个用户(我的服务)提交工作。我可以将我的服务的用户向下传播到集群(我不喜欢这样做,但如果没有其他选择也可以这样做),以便基于用户创建子队列。但是后来我不知道如何获得我想要的行为,因为有很多用户而且我不确定如何在不知道队列名称(将在提交作业时创建)的情况下为每个队列设置限制(权重) .
在此先感谢您的帮助。
我发现无法抢占同一队列中的容器。我妥协了。
我一直在尝试使用 YARN 资源队列在任何给定时间通过控制作业数量(我只有 MR 作业,没有其他 YARN 应用程序)来控制争用。我的情况是 -
我有一项服务可以接受来自用户的请求和 运行s 一些报告(作为 MR 作业)。这些工作有时会很耗时,在高峰期,这些工作会争夺资源,过多的共享意味着没有一个工作能取得像样的进展。我正在尝试尽量减少在任何给定时间队列中可以 运行 的报告数量。
我可以通过将队列的最大 运行ning 应用程序设置为所需值来完成此操作的一部分。现在,我可以在任何给定时间向集群提交 MR apps/jobs,并且只提交(比如说 'n')作业 运行。现在,问题是,没有办法抢占同一个队列中的任务(或者我不知道)。我希望我能够以这样的方式向这个队列提交作业:当有一个作业时,它占据了所有队列,当有 2 个作业时,第一个作业的一些任务被杀死并且两个作业都相等资源和第三个工作进一步划分资源等等(基本上是 FairShareScheduler 使用抢占的方式,但在一个队列而不是多个队列中)。
这可能吗?我现在只有一个用户(我的服务)提交工作。我可以将我的服务的用户向下传播到集群(我不喜欢这样做,但如果没有其他选择也可以这样做),以便基于用户创建子队列。但是后来我不知道如何获得我想要的行为,因为有很多用户而且我不确定如何在不知道队列名称(将在提交作业时创建)的情况下为每个队列设置限制(权重) .
在此先感谢您的帮助。
我发现无法抢占同一队列中的容器。我妥协了。