Перейти к основному содержимому
Перейти к основному содержимому

Разделение хранилища и вычислений

Обзор

В этом руководстве рассматривается, как вы можете использовать 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 с разделенным хранилищем и вычислениями!

Пример бакета S3 с использованием разделения вычислений и хранилища

3. Реализация репликации для повышения устойчивости (по желанию)

осторожно

Не настраивайте политику жизненного цикла AWS/GCS. Это не поддерживается и может привести к поломке таблиц.

Для повышения устойчивости вы можете использовать несколько узлов сервера ClickHouse, распределенных по нескольким регионам AWS, с бакетом S3 для каждого узла.

Репликация с дисками S3 может быть выполнена с помощью движка таблиц ReplicatedMergeTree. Смотрите следующее руководство для подробностей:

Дальнейшее чтение