Разделение хранилища и вычислений
Обзор
Этот гид исследует, как вы можете использовать ClickHouse и S3 для реализации архитектуры с разделенным хранилищем и вычислениями.
Разделение хранилища и вычислений означает, что вычислительные ресурсы и ресурсы хранения управляются независимо. В ClickHouse это позволяет добиться лучшей масштабируемости, эффективности затрат и гибкости. Вы можете отдельно масштабировать ресурсы хранения и вычислений по мере необходимости, оптимизируя производительность и затраты.
Использование ClickHouse с поддержкой S3 особенно полезно для случаев, когда производительность запросов к "холодным" данным менее критична. ClickHouse поддерживает использование S3 в качестве хранилища для движка MergeTree
с использованием S3BackedMergeTree
. Этот движок таблиц позволяет пользователям использовать преимущества масштабируемости и экономии затрат S3, сохраняя производительность вставки и запросов движка MergeTree
.
Обратите внимание, что реализация и управление архитектурой с разделением хранилища и вычислений более сложны по сравнению с стандартными внедрениями ClickHouse. Хотя самоуправляемый ClickHouse позволяет разделять хранилище и вычисления, как обсуждено в этом гиде, мы рекомендуем использовать ClickHouse Cloud, который позволяет использовать ClickHouse в этой архитектуре без конфигурации, используя SharedMergeTree
движок таблицы.
Этот гид предполагает, что вы используете ClickHouse версии 22.8 или выше.
Не настраивайте никаких политик жизненного цикла AWS/GCS. Это не поддерживается и может привести к повреждению таблиц.
1. Использование S3 как диска ClickHouse
Создание диска
Создайте новый файл в каталоге ClickHouse config.d
, чтобы сохранить конфигурацию хранения:
Скопируйте следующий XML в вновь созданный файл, заменив BUCKET
, ACCESS_KEY_ID
, SECRET_ACCESS_KEY
на данные вашего AWS бакета, в котором вы хотите хранить свои данные:
Если вам нужно дополнительно указать настройки для S3 диска, например, указать region
или отправить пользовательский HTTP header
, вы можете найти список соответствующих настроек здесь.
Вы также можете заменить access_key_id
и secret_access_key
на следующее, что попытается получить учетные данные из переменных окружения и метаданных Amazon EC2:
После того как вы создали файл конфигурации, вам нужно обновить владельца файла на пользователя и группу clickhouse:
Теперь вы можете перезапустить сервер ClickHouse, чтобы изменения вступили в силу:
2. Создание таблицы с поддержкой S3
Чтобы проверить, что мы правильно настроили диск S3, мы можем попытаться создать и запрашивать таблицу.
Создайте таблицу, указав новую политику хранения S3:
Обратите внимание, что нам не нужно было указывать движок как S3BackedMergeTree
. ClickHouse автоматически преобразует тип движка на внутреннем уровне, если он обнаруживает, что таблица использует S3 для хранения.
Проверьте, что таблица была создана с правильной политикой:
Вы должны увидеть следующий результат:
Теперь давайте вставим несколько строк в нашу новую таблицу:
Давайте проверим, что наши строки были вставлены:
В консоли AWS, если ваши данные успешно вставлены в S3, вы должны увидеть, что ClickHouse создал новые файлы в вашем указанном бакете.
Если всё прошло успешно, вы теперь используете ClickHouse с разделенным хранилищем и вычислениями!

3. Реализация репликации для отказоустойчивости (необязательно)
Не настраивайте никаких политик жизненного цикла AWS/GCS. Это не поддерживается и может привести к повреждению таблиц.
Для обеспечения отказоустойчивости вы можете использовать несколько узлов сервера ClickHouse, распределенных по нескольким регионам AWS, с бакетом S3 для каждого узла.
Репликация с использованием S3 дисков может быть выполнена с помощью движка таблиц ReplicatedMergeTree
. См. следующий гид для получения деталей: