Рекомендации по размеру и аппаратному обеспечению
Этот гид обсуждает наши общие рекомендации по аппаратному обеспечению, вычислениям, памяти и конфигурациям дисков для пользователей с открытым исходным кодом. Если вы хотите упростить свою настройку, мы рекомендуем использовать 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-тип (общие случаи использования): соотношение памяти к ядрам CPU 4:1
- R-тип (случаи использования хранилища данных): соотношение памяти к ядрам CPU 8:1
- C-тип (оптимизированные для вычислений случаи использования): соотношение памяти к ядрам CPU 2:1
Например, при использовании M-типов CPU мы рекомендуем предусмотреть 100 ГБ памяти на 25 ядер CPU. Чтобы определить необходимое количество памяти для вашего приложения, необходимо провести профилирование использования памяти. Вы можете прочитать это руководство по отладке проблем с памятью или использовать встроенную панель мониторинга для мониторинга ClickHouse.
Память
Как и выбор CPU, ваше соотношение памяти к хранилищу и памяти к CPU зависит от вашего случая использования.
Необходимый объем RAM обычно зависит от:
- Сложности запросов.
- Объема данных, обрабатываемых в запросах.
В общем, чем больше у вас памяти, тем быстрее будут выполняться ваши запросы.
Если ваш случай использования чувствителен к цене, меньшие объемы памяти будут работать, так как возможно включение настроек (max_bytes_before_external_group_by
и max_bytes_before_external_sort
), чтобы разрешить сброс данных на диск, но имейте в виду, что это может значительно повлиять на производительность запросов.
Каково должно быть соотношение памяти к хранилищу?
Для небольших объемов данных приемлемо соотношение 1:1 памяти к хранилищу, но общая память не должна быть ниже 8 ГБ.
Для случаев использования с долгими периодами хранения данных или с большими объемами данных, мы рекомендуем соотношение 1:100 до 1:130 памяти к хранилищу. Например, 100 ГБ RAM на реплику, если вы храните 10 ТБ данных.
Для случаев использования с частым доступом, таких как рабочие нагрузки, ориентированные на клиентов, мы рекомендуем использовать больше памяти с соотношением 1:30 до 1:50 памяти к хранилищу.
Реплики
Мы рекомендуем иметь по крайней мере три реплики на шард (или две реплики с Amazon EBS). Кроме того, мы предлагаем вертикально масштабировать все реплики перед добавлением дополнительных реплик (горизонтальное масштабирование).
ClickHouse не производит автоматическое шардирование, и перераспределение вашего набора данных потребует значительных вычислительных ресурсов. Поэтому мы обычно рекомендуем использовать самый мощный сервер, доступный для предотвращения необходимости перераспределять ваши данные в будущем.
Рассмотрите возможность использования ClickHouse Cloud, который автоматически масштабируется и позволяет легко контролировать количество реплик для вашего случая использования.
Примеры конфигураций для крупных нагрузок
Конфигурации ClickHouse сильно зависят от требований вашего конкретного приложения. Пожалуйста, свяжитесь с отделом продаж, если вы хотите, чтобы мы помогли оптимизировать вашу архитектуру для снижения затрат и повышения производительности.
Чтобы предоставить рекомендации (не рекомендации), ниже приведены примерные конфигурации пользователей ClickHouse в производственной среде:
B2B SaaS Fortune 500
Хранение | |
Ежемесячный объем новых данных | 30TB |
Общее хранилище (сжатое) | 540TB |
Срок хранения данных | 18 месяцев |
Диск на узел | 25TB |
CPU | |
Конкуренция | 200+ конкурентных запросов |
# реплик (включая высокую доступность) | 44 |
vCPU на узел | 62 |
Общее количество vCPU | 2700 |
Память | |
Общая RAM | 11TB |
RAM на реплику | 256GB |
Соотношение RAM к vCPU | 4:1 |
Соотношение RAM к диску | 1:50 |
Fortune 500 Оператор Телекоммуникаций для случаев использования логирования
Хранение | |
Ежемесячный объем логов | 4860TB |
Общее хранилище (сжатое) | 608TB |
Срок хранения данных | 30 дней |
Диск на узел | 13TB |
CPU | |
# реплик (включая высокую доступность) | 38 |
vCPU на узел | 42 |
Общее количество vCPU | 1600 |
Память | |
Общая RAM | 10TB |
RAM на реплику | 256GB |
Соотношение RAM к vCPU | 6:1 |
Соотношение RAM к диску | 1:60 |
Дальнейшее чтение
Ниже приведены опубликованные блоги по архитектуре от компаний, использующих ClickHouse с открытым исходным кодом: