Presto - это многопоточная программа на Java, которая прилагает все усилия, чтобы использовать все доступные ресурсы ЦП при обработке запроса (при условии, что входная таблица достаточно велика, чтобы гарантировать такой параллелизм). Вы можете искусственно ограничить количество ресурсов ЦП, которые Presto использует на уровне операционной системы, используя контрольные группы, привязку ЦП и т. Д.
Нет причин или преимуществ запускать несколько рабочих Presto на одной машине. Вы не должны этого делать, потому что они будут без нужды конкурировать друг с другом за ресурсы и, вероятно, будут работать хуже, чем один процесс.
Мы используем выделенного координатора в наших развертываниях с более чем 50 машинами, потому что мы обнаружили, что наличие запросов процесса координатора замедлит его, пока он выполняет работу по координации запросов, что отрицательно сказывается на общей производительности запросов. Для небольших кластеров выделение машины для координации, вероятно, будет пустой тратой ресурсов. Вам нужно будет провести несколько экспериментов с настройкой вашего кластера и рабочей нагрузкой, чтобы определить, какой способ лучше всего подходит для вашей среды.
Вы можете сделать так, чтобы один процесс Presto действовал и как координатор, и как рабочий, что может быть полезно для крошечных кластеров или в целях тестирования. Для этого добавьте это в файл etc/config.properties
:
coordinator=true
node-scheduler.include-coordinator=true
Ваша идея запустить специальный процесс-координатор на машине, совместно используемой с рабочим процессом, интересна. Например, на машине с 16 процессорами вы можете использовать контрольные группы или привязку к процессору, чтобы выделить 2 ядра процессу координатора и ограничить рабочий процесс 14 ядрами. Мы никогда этого не пробовали, но это может быть хорошим вариантом для небольших кластеров.
Задача - это этап в плане запроса, который выполняется на работнике (интерфейс командной строки показывает список этапов во время выполнения запроса). Для такого запроса, как SELECT COUNT(*) FROM t
, будет задача для каждой работы, которая выполняет сканирование таблицы и частичное агрегирование, и еще одна задача для одного рабочего для окончательной агрегации. Более сложные запросы, содержащие соединения, подзапросы и т. Д., Могут привести к выполнению нескольких задач на каждом рабочем узле для одного запроса.
person
David Phillips
schedule
18.11.2013