Интеграция Google Cloud Storage с ClickHouse
Если вы используете ClickHouse Cloud на Google Cloud, эта страница вам не подходит, поскольку ваши сервисы уже используют Google Cloud Storage. Если вы хотите SELECT
или INSERT
данные из GCS, пожалуйста, смотрите gcs
табличную функцию.
ClickHouse признает, что GCS представляет собой привлекательное решение для хранения для пользователей, стремящихся разделить хранение и вычисления. Для достижения этой цели предоставляется поддержка использования GCS в качестве хранилища для движка MergeTree. Это позволит пользователям воспользоваться масштабируемостью и экономическими преимуществами GCS, а также производительностью вставок и запросов движка MergeTree.
MergeTree на основе GCS
Создание диска
Чтобы использовать ведро GCS в качестве диска, мы должны сначала объявить его в конфигурации ClickHouse в файле под conf.d
. Пример объявления диска GCS показан ниже. Эта конфигурация включает несколько секций для настройки "диска" GCS, кэша и политики, которая указывается в DDL запросах при создании таблиц на диске GCS. Каждая из этих секций описана ниже.
storage_configuration > disks > gcs
Эта часть конфигурации показана в выделенной секции и указывает, что:
- Пакетные удаления не должны выполняться. GCS в настоящее время не поддерживает пакетные удаления, поэтому автодетект отключен, чтобы подавить сообщения об ошибках.
- Тип диска —
s3
, поскольку используется API S3. - Конечная точка, предоставленная GCS.
- HMAC ключ и секрет сервисного аккаунта.
- Путь к метаданным на локальном диске.
storage_configuration > disks > cache
Пример конфигурации, выделенный ниже, включает 10Gi памяти для кэша диска gcs
.
storage_configuration > policies > gcs_main
Политики конфигурации хранения позволяют выбирать, где хранится данные. Выделенная ниже политика позволяет хранить данные на диске gcs
, указывая политику gcs_main
. Например, CREATE TABLE ... SETTINGS storage_policy='gcs_main'
.
Полный список настроек, относящихся к этой декларации диска, можно найти здесь.
Создание таблицы
Предполагая, что вы настроили ваш диск для использования ведра с правами на запись, вы сможете создать таблицу, как в приведенном ниже примере. В целях краткости мы используем подмножество колонок такси NYC и передаем данные напрямую в таблицу на основе GCS:
В зависимости от оборудования, последняя вставка 1 миллиона строк может занять несколько минут. Вы можете подтвердить ход выполнения через таблицу system.processes. Не стесняйтесь увеличивать количество строк до предела в 10 миллионов и исследовать некоторые примерные запросы.
Обработка репликации
Репликация с дисками GCS может быть выполнена с использованием движка таблиц ReplicatedMergeTree
. Смотрите руководство по репликации одного шарда в двух регионах GCP с использованием GCS для подробностей.
Узнать больше
XML API Cloud Storage совместим с некоторыми инструментами и библиотеками, которые работают с сервисами такими как Amazon Simple Storage Service (Amazon S3).
Для получения дополнительной информации по настройке потоков смотрите Оптимизация производительности.
Использование Google Cloud Storage (GCS)
Объектное хранилище используется по умолчанию в ClickHouse Cloud, вам не нужно следовать этой процедуре, если вы работаете в ClickHouse Cloud.
Запланировать развертывание
Этот учебник написан для описания развертывания реплицированного ClickHouse, работающего в Google Cloud и использующего Google Cloud Storage (GCS) в качестве диска хранения ClickHouse "типа".
В учебнике вы развернете узлы сервера ClickHouse на виртуальных машинах Google Cloud Engine, каждая из которых будет иметь связанное ведро GCS для хранения. Репликация координируется набором узлов ClickHouse Keeper, также развернутых как виртуальные машины.
Примерные требования для высокой доступности:
- Два узла сервера ClickHouse в двух регионах GCP
- Два ведра GCS, развернутые в тех же регионах, что и два узла сервера ClickHouse
- Три узла ClickHouse Keeper, два из которых развернуты в тех же регионах, что и узлы сервера ClickHouse. Третий может находиться в том же регионе, что и один из первых двух узлов Keeper, но в другой зоне доступности.
ClickHouse Keeper требует два узла для работы, поэтому необходимо три узла для высокой доступности.
Подготовка ВМ
Разверните пять ВМ в трех регионах:
Регион | Сервер ClickHouse | Ведро | ClickHouse Keeper |
---|---|---|---|
1 | chnode1 | bucket_regionname | keepernode1 |
2 | chnode2 | bucket_regionname | keepernode2 |
3 * | keepernode3 |
*
Это может быть другая зона доступности в том же регионе, что и 1 или 2.
Развертывание ClickHouse
Разверните ClickHouse на двух хостах, в примерах конфигураций они названы chnode1
, chnode2
.
Разместите chnode1
в одном регионе GCP, а chnode2
— в другом. В данном руководстве используются us-east1
и us-east4
для виртуальных машин вычислений, а также для ведер GCS.
Не запускайте clickhouse server
, пока он не будет сконфигурирован. Просто установите его.
Смотрите инструкции по установке при выполнении шагов развертывания на узлах сервера ClickHouse.
Развертывание ClickHouse Keeper
Разверните ClickHouse Keeper на трех хостах, в примерах конфигураций они названы keepernode1
, keepernode2
и keepernode3
. keepernode1
можно развернуть в том же регионе, что и chnode1
, keepernode2
с chnode2
, а keepernode3
в любом регионе, но в другой зоне доступности по сравнению с узлом ClickHouse в этом регионе.
Смотрите инструкции по установке при выполнении шагов развертывания на узлах ClickHouse Keeper.
Создайте два ведра
Два сервера ClickHouse будут находиться в разных регионах для высокой доступности. У каждого будет ведро GCS в том же регионе.
В Cloud Storage > Buckets выберите CREATE BUCKET. Для этого учебника создаются два ведра, одно в каждом из us-east1
и us-east4
. Ведра являются одно-региональными, стандартного класса хранения и не являются публичными. При необходимости включите предотвращение публичного доступа. Не создавайте папки, они будут созданы, когда ClickHouse запишет в хранилище.
Если вам нужны пошаговые инструкции по созданию ведер и HMAC ключа, разверните Создайте ведра GCS и HMAC ключ и следуйте инструкции:
Create GCS buckets and an HMAC key
ch_bucket_us_east1

ch_bucket_us_east4

Generate an Access key
Create a service account HMAC key and secret
Open Cloud Storage > Settings > Interoperability and either choose an existing Access key, or CREATE A KEY FOR A SERVICE ACCOUNT. This guide covers the path for creating a new key for a new service account.

Add a new service account
If this is a project with no existing service account, CREATE NEW ACCOUNT.

There are three steps to creating the service account, in the first step give the account a meaningful name, ID, and description.

In the Interoperability settings dialog the IAM role Storage Object Admin role is recommended; select that role in step two.

Step three is optional and not used in this guide. You may allow users to have these privileges based on your policies.

The service account HMAC key will be displayed. Save this information, as it will be used in the ClickHouse configuration.

Настройка ClickHouse Keeper
Все узлы ClickHouse Keeper имеют одинаковый файл конфигурации, за исключением строки server_id
(первая выделенная строка ниже). Измените файл с именами хостов для ваших серверов ClickHouse Keeper, и на каждом из серверов установите server_id
так, чтобы он соответствовал соответствующей записи server
в raft_configuration
. Так как в этом примере server_id
установлен на 3
, мы выделили совпадающие строки в raft_configuration
.
- Отредактируйте файл с вашими именами хостов и убедитесь, что они разрешаются с узлов сервера ClickHouse и узлов Keeper.
- Скопируйте файл в соответствующее место (
/etc/clickhouse-keeper/keeper_config.xml
на каждом из серверов Keeper). - Отредактируйте
server_id
на каждой машине в зависимости от его номера записи вraft_configuration
.
Настройка сервера ClickHouse
Некоторые шаги в этом руководстве попросят вас разместить файл конфигурации в /etc/clickhouse-server/config.d/
. Это местоположение по умолчанию на системах Linux для файлов переопределения конфигурации. Когда вы помещаете эти файлы в этот каталог, ClickHouse объединяет содержимое с конфигурацией по умолчанию. Размещая эти файлы в каталоге config.d
, вы избежите потери вашей конфигурации во время обновления.
Сетевые настройки
По умолчанию ClickHouse слушает на интерфейсе обратной связи, в реплицированном развертывании необходима сетевая связь между машинами. Слушайте на всех интерфейсах:
Удалённые серверы ClickHouse Keeper
Репликация координируется ClickHouse Keeper. Этот файл конфигурации идентифицирует узлы ClickHouse Keeper по имени хоста и номеру порта.
- Отредактируйте имена хостов, чтобы соответствовать вашим хостам Keeper.
Удалённые серверы ClickHouse
Этот файл настраивает имя хоста и порт каждого сервера ClickHouse в кластере. Файл конфигурации по умолчанию содержит образцы определений кластеров, чтобы показать только полностью настроенные кластеры, для этого тег replace="true"
добавляется к записи remote_servers
, чтобы при объединении этой конфигурации с конфигурацией по умолчанию заменилось раздел remote_servers
, а не добавлялось к нему.
- Отредактируйте файл с вашими именами хостов и убедитесь, что они разрешаются с узлов сервера ClickHouse.
Идентификация реплики
Этот файл настраивает параметры, относящиеся к пути ClickHouse Keeper. В частности, макросы, используемые для идентификации, к какой реплике относятся данные. На одном сервере реплика должна быть указана как replica_1
, а на другом сервере — replica_2
. Имена могут быть изменены, основываясь на нашем примере одной реплики, хранящейся в Южной Каролине, и другой в Северной Виргинии, значения могут быть carolina
и virginia
; просто убедитесь, что они разные на каждой машине.
Хранение в GCS
Конфигурация хранения ClickHouse включает disks
и policies
. Диск, настраиваемый ниже, называется gcs
и имеет тип s3
. Тип s3, потому что ClickHouse обращается к ведру GCS так, как если бы это было ведро AWS S3. Для каждого узла сервера ClickHouse потребуется две копии этой конфигурации.
Необходимо внести следующие замены в конфигурацию ниже.
Эти замены различаются между двумя узлами сервера ClickHouse:
REPLICA 1 BUCKET
должен быть установлен на имя ведра в том же регионе, что и сервер.REPLICA 1 FOLDER
следует изменить наreplica_1
на одном из серверов, а на другом — наreplica_2
.
Эти замены общие для двух узлов:
- Значение
access_key_id
должно быть установлено на HMAC ключ, сгенерированный ранее. - Значение
secret_access_key
должно быть установлено на HMAC секрет, сгенерированный ранее.
Запуск ClickHouse Keeper
Используйте команды для вашей операционной системы, например:
Проверка статуса ClickHouse Keeper
Отправляйте команды в ClickHouse Keeper с помощью netcat
. Например, mntr
возвращает состояние кластера ClickHouse Keeper. Если вы выполните команду на каждом из узлов Keeper, вы увидите, что один из них является ведущим, а другие два — последователями:
Запуск сервера ClickHouse
На chnode1
и chnode2
выполните:
Проверка
Проверка конфигурации диска
system.disks
должен содержать записи для каждого диска:
- default
- gcs
- cache
Проверка, что таблицы, созданные в кластере, созданы на обоих узлах
Проверка, что данные можно вставить
Проверка, что политика хранения gcs_main
используется для таблицы.
Проверка в Google Cloud Console
Смотрев на ведра, вы увидите, что в каждом ведре была создана папка с именем, использованным в конфигурационном файле storage.xml
. Разверните папки, и вы увидите много файлов, представляющих разделы данных.
Ведро для первой реплики

Ведро для второй реплики
