2016-07-19 6 views
1

Как известно, если запрос попросит менеджера ресурсов получить ресурс, но не может получить достаточный ресурс (ниже минимального количества vsegs), он все равно спросит ресурс в следующем раунде. Например, если запрос запрашивает 1000 vsegs в первый раз, но он получает только 20 vsegs. Поскольку минимальное количество vsegs, которое может выполнить запрос, равно 100, будет ли оно запрашивать 80 vsegs в следующий раз и всегда сохранять 20 vsegs?Как работает менеджер ресурсов HAWQ, если он не может получить достаточный ресурс?

+1

Как сказал Лили Ма и Хуан Чжан, если Query1 попросит 100 vsegs (минимальное количество vsegs, которое может выполнить query1), но для менеджера ресурсов всего 20 vsegs, а Query1 будет зависать и ждать достаточно vsegs. Однако, если есть Query2, которому требуется всего 10 vsegs, Query2 может получить vsegs из диспетчера ресурсов для немедленного запуска или ожидания после запуска или отказа Query1? –

ответ

0

Я думаю, что hawq сохранит 20 слотов ресурсов и продолжит запрашивать еще 80 слотов ресурсов. Но это вызовет голод. И менеджер ресурсов должен уметь это обнаруживать.

1

Нет, ресурс не будет храниться сессией в HAWQ. Когда не хватает vsegs, запрос будет зависать, чтобы ждать прибытия ресурса, и после таймаута запрос завершится с ошибкой.

0

Да, Хуберт прав. Когда диспетчер запросов требует ресурсов из диспетчера ресурсов (короткий как RM), он будет идентифицировать min_segment_count (короткий как N1) и max_segment_count (короткий как N2), что означает, что если RM имеет достаточно доступных виртуальных сегментов N2, он может вернуть N2 виртуальные сегменты , Но если у RM нет N2 доступных виртуальных сегментов, но есть> = N1 доступных сегментов, он может вернуть доступные виртуальные сегменты назад. Если его доступный номер сегмента меньше N1, запрос будет зависать.

В краткосрочной перспективе, запрос (N1, N2), а Р. М. судьи доступен номер виртуального сегмента N

{

, если N> = N2, N2 возврата;

еще если N> = N1 возврат N1;

еще держитесь, пока не будет достаточно ресурсов.

}

+0

@chunling, если query2 позже запроса1, и они находятся в одной очереди ресурсов, он будет ждать, пока запрос1 не получит достаточный ресурс. Это поведение по умолчанию. Спасибо –

0

Но если Query1 и Query2 находятся в разных очередях ресурсов, она определяется долей очередей ресурсов.

+0

Так могу ли я так понимать? В той же очереди ресурсов запросы выполняются по порядку, а в разных очередях ресурсов они выполняются пропорционально количеству очередей ресурсов независимо. –

Смежные вопросы