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