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

Разделение Хранения и Вычислений

Обзор

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

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