我的用例:
我们有一个长期的工作。我打过电话给你,lrj。这项工作每星期进行一次。
我们有多个小的运行作业,可以随时来。这些作业的优先级高于长时间运行的作业。
为了解决这个问题,我们创建了如下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:我们尝试使用 maximum-capacity
配置根据Yarn文件,但它不工作,因为我在我的另一个问题张贴在这里
1条答案
按热度按时间ffx8fchx1#
经过更多的分析,包括与一些无名英雄的讨论,我们决定根据我们的用例对Yarn队列应用抢占。
当发生以下事件序列时,q1队列上的作业将被抢占:
q1队列使用的资源超过了指定的容量(例如:lrj作业使用的资源超过了队列上指定的资源)。
突然,q2队列上的作业被调度(例如:突然触发多个正在运行的小作业)。
要理解先发制人,请阅读这个和这个
以下是我们在aws cloudformation脚本中用于启动emr群集的示例配置:
容量计划程序配置:
Yarn站点配置:
有了以上内容,您必须根据您的用例在特定队列上指定作业。