Разделение хранилища и вычислений
Обзор
В этом руководстве рассматривается, как вы можете использовать ClickHouse и S3 для реализации архитектуры с разделенным хранилищем и вычислениями.
Разделение хранилища и вычислений означает, что вычислительные ресурсы и ресурсы хранения управляются независимо. В ClickHouse это позволяет улучшить масштабируемость, оптимальность затрат и гибкость. Вы можете масштабировать ресурсы хранения и вычисления отдельно по мере необходимости, оптимизируя производительность и затраты.
Использование ClickHouse с поддержкой S3 особенно полезно для случаев, когда производительность запросов на "холодных" данных менее критична. ClickHouse поддерживает использование S3 в качестве хранилища для движка MergeTree
с помощью S3BackedMergeTree
. Этот движок таблицы позволяет пользователям использовать преимущества масштабируемости и стоимости S3, сохраняя при этом производительность вставки и запросов движка MergeTree
.
Обратите внимание, что реализация и управление архитектурой разделения хранилища и вычислений сложнее по сравнению со стандартными развертываниями ClickHouse. Хотя self-managed ClickHouse позволяет разделять хранилище и вычисления, как обсуждено в этом руководстве, мы рекомендуем использовать ClickHouse Cloud, который позволяет вам использовать ClickHouse в этой архитектуре без конфигурации с помощью движка таблиц SharedMergeTree
.
Данное руководство предполагает, что вы используете ClickHouse версии 22.8 или выше.
Не настраивайте политику жизненного цикла AWS/GCS. Это не поддерживается и может привести к поломке таблиц.
1. Используйте S3 в качестве диска ClickHouse
Создание диска
Создайте новый файл в каталоге config.d
ClickHouse для хранения конфигурации хранилища:
Скопируйте следующий 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
. Смотрите следующее руководство для подробностей: