如果HAWQ资源管理器无法获取足够的资源,它将如何做?

时间:2016-07-19 06:36:34

标签: resourcemanager hawq

众所周知,如果查询要求资源管理器获取资源但无法获得足够的资源(低于最小数量的vsegs),它仍会在下一轮中询问资源。例如,如果查询第一次询问1000个vsegs,但它只获得20个vsegs。由于查询可以运行的最小数量的vsegs是100,它下次会询问80个vsegs并始终保持20个vsegs吗?

4 个答案:

答案 0 :(得分:1)

不,HAWQ中的会话不会保留资源。 当没有足够的vsegs时,查询将挂起以等待资源到达,超时后查询将失败。

答案 1 :(得分:0)

我猜hawq将保留20个资源槽并继续请求80个资源槽。但这会导致饥饿。资源管理器应该能够检测到这一点。

答案 2 :(得分:0)

是的,休伯特是对的。 当Query调度程序需要来自资源管理器的资源(简称为RM)时,它将识别min_segment_count(简称为N1)和max_segment_count(简称为N2),这意味着如果RM具有足够的N2可用虚拟段,则它可以返回N2虚拟段。但是,如果RM没有N2可用的虚拟段,但是具有> = N1个可用段,则它可以返回可用的虚拟段。如果其可用的段号小于N1,则请求将挂起。

短期内, 请求(N1,N2)和RM判断可用的虚拟段号N

{

如果N> = N2则返回N2;

否则,如果N> = N1,则返回N1;

否则挂起,直到有足够的资源。

}

答案 3 :(得分:0)

但是如果query1和query2在不同的资源队列中,则由资源队列的比例决定。