Интеграция 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 для подробностей.
Узнать больше
Cloud Storage XML API совместим с некоторыми инструментами и библиотеками, которые работают с такими сервисами, как 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 ключа и следуйте инструкции:
Создайте корзины GCS и ключ HMAC
ch_bucket_us_east1

ch_bucket_us_east4

Генерация ключа доступа
Создание ключа и секрета HMAC для учетной записи службы
Откройте Cloud Storage > Настройки > Взаимодействие и выберите существующий Ключ доступа или СОЗДАТЬ КЛЮЧ ДЛЯ УЧЕТНОЙ ЗАПИСИ СЛУЖБЫ. Этот гид описывает процесс создания нового ключа для новой учетной записи службы.

Добавить новую учетную запись службы
Если это проект без существующей учетной записи службы, СОЗДАТЬ НОВУЮ УЧЕТНУЮ ЗАПИСЬ.

Существует три шага для создания учетной записи службы, на первом шаге дайте учетной записи понятное имя, ID и описание.

В диалоговом окне настроек взаимодействия рекомендуется использовать роль IAM Storage Object Admin; выберите эту роль на втором шаге.

Третий шаг является необязательным и не используется в этом гиде. Вы можете предоставить пользователям эти привилегии в зависимости от ваших политик.

Ключ HMAC учетной записи службы будет отображен. Сохраните эту информацию, она будет использована в конфигурации ClickHouse.

Настройка 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 в кластере. Файл конфигурации по умолчанию содержит примерные определения кластера; чтобы показать только полностью сконфигурированные кластеры, в элемент remote_servers
добавляется тег replace="true"
, чтобы, когда эта конфигурация объединяется с конфигурацией по умолчанию, она заменила секцию remote_servers
, а не добавила к ней.
- Редактируйте файл с вашими именами хостов и убедитесь, что они разрешаются с узлов сервера ClickHouse.
Идентификация реплики
Этот файл настраивает параметры, связанные с путем ClickHouse Keeper. В частности, макросы, используемые для идентификации, к какой реплике принадлежат данные. На одном сервере реплика должна быть указана как replica_1
, а на другом сервере replica_2
. Имена могут быть изменены, в зависимости от нашего примера, одна реплика может храниться в Южной Каролине, а другая - в Северной Вирджинии, значения могут быть carolina
и virginia
; просто убедитесь, что они разные на каждой машине.
Хранение в GCS
Конфигурация хранения ClickHouse включает disks
и policies
. Диск, который настраивается ниже, называется gcs
, и имеет type
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
и chnode
выполните:
Проверка
Проверка конфигурации диска
system.disks
должен содержать записи для каждого диска:
- default
- gcs
- cache
Проверка того, что таблицы, созданные в кластере, созданы на обоих узлах
Проверка, что данные могут быть вставлены
Проверка, что политика хранения gcs_main
используется для таблицы.
Проверка в Google Cloud Console
Просматривая корзины, вы увидите, что в каждой корзине была создана папка с именем, использованном в конфигурационном файле storage.xml
. Раскройте папки, и вы увидите много файлов, представляющих партиции данных.
Корзина для реплики один

Корзина для реплики два
