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

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

Обзор

Этот гид исследует, как вы можете использовать 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. См. следующий гид для получения деталей:

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