Рекомендации по размерам и аппаратному обеспечению
В этом руководстве обсуждаются наши общие рекомендации относительно аппаратного обеспечения, вычислений, памяти и конфигураций дисков для пользователей с открытым исходным кодом. Если вы хотите упростить свою настройку, мы рекомендуем использовать ClickHouse Cloud, так как он автоматически масштабируется и адаптируется к вашим рабочим нагрузкам, минимизируя затраты на управление инфраструктурой.
Конфигурация вашего кластера ClickHouse в значительной степени зависит от случайного использования вашего приложения и шаблонов рабочей нагрузки. При планировании вашей архитектуры вы должны учитывать следующие факторы:
- Конкуренция (запросы в секунду)
- Пропускная способность (строки, обрабатываемые в секунду)
- Объем данных
- Политика хранения данных
- Затраты на аппаратное обеспечение
- Затраты на обслуживание
Диск
Тип(ы) дисков, которые вы должны использовать с ClickHouse, зависят от объема данных, задержки или требований к пропускной способности.
Оптимизация для производительности
Чтобы максимизировать производительность, мы рекомендуем напрямую подключать обеспеченные IOPS SSD-тома от AWS или эквивалентное предложение от вашего облачного провайдера, которое оптимизирует ввод-вывод.
Оптимизация для снижения затрат на хранение
Для снижения затрат вы можете использовать тома SSD EBS общего назначения.
Вы также можете реализовать многоуровневое хранилище, используя SSD и HDD в архитектуре hot/warm/cold. В качестве альтернативы также возможно использование AWS S3 для хранения, чтобы разделить вычисления и хранение. Пожалуйста, ознакомьтесь с нашим руководством по использованию открытого ClickHouse с разделением вычислений и хранения здесь. Разделение вычислений и хранения доступно по умолчанию в ClickHouse Cloud.
CPU
Какой CPU я должен использовать?
Тип процессора, который вы должны использовать, зависит от вашего шаблона использования. В общем, однако, приложения с частыми конкурентными запросами, которые обрабатывают больше данных или используют ресурсоемкие UDF, потребуют больше ядер CPU.
Приложения с низкой задержкой или выходящие на клиентов
Для требований к задержке в десятки миллисекунд, таких как для загрузок, ориентированных на клиентов, мы рекомендуем серию EC2 i3 или i4i от AWS или эквивалентные предложения от вашего облачного провайдера, которые оптимизированы для ввода-вывода.
Приложения с высокой конкурентностью
Для рабочих нагрузок, которые необходимо оптимизировать для конкурентности (100+ запросов в секунду), мы рекомендуем серии C, оптимизированные для вычислений от AWS или эквивалентное предложение от вашего облачного провайдера.
Случай использования хранилища данных
Для рабочих нагрузок по хранилищу данных и аналитических запросов по требованию мы рекомендуем серии R от AWS или эквивалентное предложение от вашего облачного провайдера, так как они оптимизированы по памяти.
Какова должна быть загрузка CPU?
Стандарта целевой загрузки CPU для ClickHouse нет. Используйте инструменты, такие как iostat, чтобы измерять среднее использование CPU и соответственно настраивать размер ваших серверов для управления неожиданными всплесками трафика. Тем не менее, для аналитических или случаев использования хранилища данных с запросами по требованию, вы должны нацеливаться на 10-20% загрузки CPU.
Сколько ядер CPU мне использовать?
Количество CPU, которое вы должны использовать, зависит от вашей рабочей нагрузки. Тем не менее, мы в общем рекомендуем следующие соотношения памяти к ядрам CPU в зависимости от типа вашего процессора:
- M-тип (случаи общего назначения): 4:1 соотношение памяти к ядру CPU
- R-тип (случаи использования хранилища данных): 8:1 соотношение памяти к ядру CPU
- C-тип (случаи использования, оптимизированные для вычислений): 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 ТБ данных.
Для случаев использования с частым доступом, таких как нагрузки, ориентированные на клиентов, мы рекомендуем использовать больше памяти в соотношении 1:30 до 1:50 между памятью и хранилищем.
Реплики
Мы рекомендуем иметь как минимум три реплики на шард (или две реплики с Amazon EBS). Кроме того, мы предлагаем вертикально масштабировать все реплики перед добавлением дополнительных реплик (горизонтальное масштабирование).
ClickHouse не выполняет автоматическое шардирование, и перешардирование вашего набора данных потребует значительных вычислительных ресурсов. Поэтому, мы в общем рекомендуем использовать самый мощный сервер, доступный для предотвращения необходимости в будущем перешардировать ваши данные.
Рассмотрите возможность использования ClickHouse Cloud, который автоматически масштабируется и позволяет вам легко контролировать количество реплик для вашего случая использования.
Примеры конфигураций для больших рабочих нагрузок
Конфигурации ClickHouse в значительной степени зависят от требований вашего конкретного приложения. Пожалуйста, свяжитесь с отделом продаж, если вы хотите, чтобы мы помогли вам оптимизировать вашу архитектуру для затрат и производительности.
Для предоставления ориентиров (не рекомендаций) следующие примеры конфигураций пользователей ClickHouse в производстве:
Fortune 500 B2B SaaS
Хранилище | |
Ежемесячный объем новых данных | 30TB |
Общее хранилище (сжатие) | 540TB |
Хранение данных | 18 месяцев |
Диск на узел | 25TB |
CPU | |
Конкуренция | 200+ конкурентных запросов |
Количество реплик (включая HA-пару) | 44 |
vCPU на узел | 62 |
Общее количество vCPU | 2700 |
Память | |
Общая RAM | 11TB |
RAM на реплику | 256GB |
Соотношение RAM к vCPU | 4:1 |
Соотношение RAM к диску | 1:50 |
Fortune 500 Оператор связи для нагрузки на логирование
Хранилище | |
Ежемесячный объем логов | 4860TB |
Общее хранилище (сжатие) | 608TB |
Хранение данных | 30 дней |
Диск на узел | 13TB |
CPU | |
Количество реплик (включая HA-пару) | 38 |
vCPU на узел | 42 |
Общее количество vCPU | 1600 |
Память | |
Общая RAM | 10TB |
RAM на реплику | 256GB |
Соотношение RAM к vCPU | 6:1 |
Соотношение RAM к диску | 1:60 |
Дальнейшее чтение
Ниже приведены опубликованные записи в блогах о архитектуре от компаний, использующих открытый ClickHouse: