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