Перейти к основному содержанию
Перейти к основному содержанию

Рекомендации по выбору размера кластера и оборудования

В этом руководстве рассматриваются наши общие рекомендации по конфигурации оборудования, вычислительных ресурсов, памяти и дисков для пользователей open source. Если вы хотите упростить свою инфраструктуру, мы рекомендуем использовать ClickHouse Cloud, так как этот сервис автоматически масштабируется и адаптируется к вашим нагрузкам, минимизируя затраты, связанные с управлением инфраструктурой.

Конфигурация вашего кластера ClickHouse в значительной степени зависит от сценариев использования и характера рабочих нагрузок вашего приложения. При планировании архитектуры необходимо учитывать следующие факторы:

  • Конкурентность (запросы в секунду)
  • Пропускная способность (строк, обрабатываемых в секунду)
  • Объём данных
  • Политика хранения данных
  • Стоимость оборудования
  • Затраты на обслуживание

Диск

Типы дисков, которые следует использовать с ClickHouse, зависят от объёма данных и требований к задержке и пропускной способности.

Оптимизация производительности

Для максимальной производительности мы рекомендуем напрямую подключать тома Provisioned IOPS SSD от AWS или эквивалентное предложение вашего облачного провайдера, оптимизированное под операции ввода-вывода (I/O).

Оптимизация затрат на хранение

Для снижения затрат вы можете использовать тома General Purpose SSD EBS.

Вы также можете реализовать многоуровневое хранилище, используя SSD и HDD в архитектуре hot/warm/cold. В качестве альтернативы можно использовать AWS S3 для хранения данных, чтобы разделить вычисления и хранение. См. наше руководство по использованию ClickHouse с открытым исходным кодом с разделением вычислений и хранения здесь. Разделение вычислений и хранения доступно по умолчанию в ClickHouse Cloud.

CPU

Какой CPU следует использовать?

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

Приложения с низкой задержкой или клиентские приложения

Для требований по задержке на уровне десятков миллисекунд, например для клиентских нагрузок, мы рекомендуем линейки EC2 i3 или i4i от AWS либо эквивалентные предложения вашего облачного провайдера, оптимизированные по вводу-выводу (IO).

Приложения с высокой степенью параллелизма

Для нагрузок, которым важно оптимизировать параллелизм (100+ запросов в секунду), мы рекомендуем вычислительно оптимизированную серию C от AWS или эквивалентные предложения вашего облачного провайдера.

Сценарии хранилища данных (data warehousing)

Для рабочих нагрузок хранилища данных и ad-hoc аналитических запросов мы рекомендуем серию R-типа от AWS или эквивалентные предложения вашего облачного провайдера, так как они оптимизированы по памяти.


Какой должна быть загрузка CPU?

Стандартного целевого значения загрузки CPU для ClickHouse не существует. Используйте инструмент вроде iostat, чтобы измерить среднее использование CPU и при необходимости скорректировать размеры серверов для обработки неожиданных пиков трафика. Однако для аналитических сценариев или сценариев хранилища данных с ad-hoc запросами следует ориентироваться на 10–20% загрузки CPU.

Сколько ядер CPU следует использовать?

Количество ядер CPU, которое следует использовать, зависит от вашей нагрузки. Тем не менее, в целом мы рекомендуем следующие соотношения объёма памяти к одному ядру CPU в зависимости от типа CPU:

  • M-type (универсальные сценарии использования): соотношение память/ядро CPU 4 ГБ:1
  • R-type (сценарии хранилища данных): соотношение память/ядро CPU 8 ГБ:1
  • C-type (вычислительно оптимизированные сценарии): соотношение память/ядро CPU 2 ГБ:1

Например, при использовании CPU типа M мы рекомендуем выделять 100 ГБ памяти на 25 ядер CPU. Чтобы определить объём памяти, подходящий для вашего приложения, необходимо профилировать использование памяти. Вы можете прочитать это руководство по отладке проблем с памятью или использовать встроенную панель наблюдаемости для мониторинга ClickHouse.

Память

Как и выбор процессора, выбор соотношений «память–хранилище» и «память–CPU» зависит от вашего сценария использования.

Необходимый объем ОЗУ в общем случае зависит от:

  • сложности запросов;
  • объема данных, обрабатываемых в запросах.

В целом, чем больше у вас памяти, тем быстрее выполняются запросы. Если ваш сценарий использования чувствителен к стоимости, можно использовать меньший объем памяти, так как можно включить настройки (max_bytes_before_external_group_by и max_bytes_before_external_sort), позволяющие сбрасывать данные на диск. Однако имейте в виду, что это может существенно повлиять на производительность запросов.

Каким должно быть соотношение «память–хранилище»?

Для небольших объемов данных допустимо соотношение память–хранилище 1:1, но общий объем памяти не должен быть меньше 8 ГБ.

Для сценариев с длительными периодами хранения данных или с большими объемами данных мы рекомендуем соотношение «память–хранилище» от 1:100 до 1:130. Например, 100 ГБ ОЗУ на реплику, если вы храните 10 ТБ данных.

Для сценариев с частым доступом, например для клиентских (customer-facing) нагрузок, мы рекомендуем использовать больше памяти при соотношении «память–хранилище» от 1:30 до 1:50.

Реплики

Мы рекомендуем использовать как минимум три реплики на шард (или две реплики при использовании Amazon EBS). Кроме того, мы советуем сначала вертикально масштабировать все реплики, прежде чем добавлять дополнительные реплики (горизонтальное масштабирование).

ClickHouse не выполняет автоматическое шардирование, и повторное шардирование набора данных потребует значительных вычислительных ресурсов. Поэтому в целом мы рекомендуем использовать сервер максимально возможной конфигурации, чтобы в будущем избежать необходимости повторного шардирования данных.

Рассмотрите возможность использования ClickHouse Cloud, который масштабируется автоматически и позволяет с лёгкостью управлять количеством реплик под ваши задачи.

Примеры конфигураций для крупных нагрузок

Конфигурации ClickHouse существенно зависят от требований вашего приложения. Свяжитесь с отделом продаж, если вы хотите, чтобы мы помогли оптимизировать вашу архитектуру с точки зрения стоимости и производительности.

В качестве ориентира (а не рекомендаций) ниже приведены примерные конфигурации пользователей ClickHouse в продуктивной среде:

B2B SaaS‑компания из списка Fortune 500

Хранилище
Месячный объём новых данных30TB
Общий объём хранилища (в сжатом виде)540TB
Период хранения данных18 месяцев
Диск на узел25TB
CPU
Уровень параллелизма200+ одновременных запросов
Число реплик (включая HA-пару)44
vCPU на узел62
Общее число vCPU2700
Память
Общий объём ОЗУ11TB
ОЗУ на реплику256GB
Соотношение ОЗУ и vCPU4 GB:1
Соотношение ОЗУ и диска1:50

Телеком-оператор из списка Fortune 500 для сценария логирования

Хранилище
Месячный объем логов4860TB
Общий объем хранилища (в сжатом виде)608TB
Срок хранения данных30 дней
Объем диска на узел13TB
CPU
Количество реплик (включая HA-пару)38
vCPU на узел42
Общее количество vCPU1600
Память
Общий объем RAM10TB
RAM на реплику256GB
Соотношение RAM к vCPU6 GB:1
Соотношение RAM к диску1:60

Дополнительные материалы

Ниже приведены опубликованные в блогах материалы об архитектурных решениях компаний, использующих open‑source ClickHouse: