Errors
Trino

Trino: Hardware requirements for Presto

Ты собираешь кластер Trino (он же Presto) с нуля и упёрся в вечный вопрос: какое железо закладывать в спецификации? Ответ, как всегда, — it depends. Но это не з

Ты собираешь кластер Trino (он же Presto) с нуля и упёрся в вечный вопрос: какое железо закладывать в спецификации? Ответ, как всегда, — it depends. Но это не значит, что нужно гадать на кофейной гуще.

С чего обычно начинают

Большинство не придумывает велосипед и разворачивает Trino на тех же нодах, где уже крутится Hadoop. Так исторически делали в Facebook — ставили Presto на несколько машин внутри кластера, чтобы распределить сетевую нагрузку.

Если же ты проектируешь инфраструктуру с чистого листа, есть проверенные industry standard ratios. На каждый диск планируй примерно 2 CPU core и 2-4 GB оперативной памяти. Сеть — 10 Gigabit, если бюджет позволяет. Это стартовая точка для размышлений.

Ключевые точки при расчёте

Общий объём данных определит количество дисков. Помни про накладные расходы HDFS — дисков нужно много.

Соотношение CPU к дискам зависит от температуры данных. Горячие данные, с которыми идёт активная работа, требуют больше вычислительной мощности. Холодные архивные данные упираются в скорость физического чтения с дисков. Если запускаешь новое хранилище, почти все данные будут горячими — бери CPU с запасом.

Соотношение CPU к памяти упирается в твои запросы. Aggregations и joins в текущей реализации требуют, чтобы финальные результаты агрегации и хэш-таблицы для джойнов помещались в память одной машины. Чем они массивнее — тем больше RAM тебе нужно. И не забывай про кэширование горячих данных.

Пропускная способность сети критична, когда рабочие ноды начинают гнать промежуточные результаты координатору для финального сведения. Узкое место здесь аукнется на сложных распределённых джойнах.

Что делать на практике

Собери сначала минимальный жизнеспособный кластер из 4+ машин по описанным выше ratios. Не пытайся теоретически рассчитать идеальную конфигурацию под свои petabytes.

Запусти на нём свои реальные запросы к своим реальным данным. Проверь, где появляются очевидные узкие места: CPU простаивает, ожидая данные с дисков? Сеть забита? Память кончается? По результатам этих тестов и подкручивай соотношения.

Итоговая формула проста: стартовые ratios → бенчмарк → профит. Всё остальное — преждевременная оптимизация.