Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for ClickHouse
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Информация об имеющихся кластерах
    • Создание кластера
    • Подключение к базе данных
    • Остановка и запуск кластера
    • SQL-запросы в консоли управления
    • Изменение настроек кластера и базы данных
    • Настройка доступа к ObjectStorage
    • Подключение внешних словарей
    • Подключение собственной геобазы
    • Управление моделями машинного обучения
    • Управление схемами формата данных
    • Подключение к DataLens
    • Изменение версии ClickHouse
    • Управление хостами ZooKeeper
    • Управление хостами ClickHouse
    • Управление базами данных
    • Управление пользователями БД
    • Управление резервными копиями
    • Управление шардами
    • Управление группами шардов
    • Просмотр логов кластера
    • Удаление кластера
    • Мониторинг состояния кластера и хостов
  • Практические руководства
    • Все сценарии
    • Добавление данных в БД
    • Шардирование таблиц
    • Использование гибридного хранилища
    • Получение данных из Managed Service for Apache Kafka®
    • Получение данных из RabbitMQ
    • Обмен данными с Yandex Data Proc
    • Настройка Yandex Cloud DNS для доступа к кластеру из других облачных сетей
    • Анализ логов Object Storage при помощи DataLens
    • Настройка Managed Service for ClickHouse для Graphite
    • Сохранение потока данных Yandex Data Streams в Managed Service for ClickHouse
    • Миграция базы данных из Google BigQuery в Managed Service for ClickHouse
    • Поставка данных из Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Классы хостов
      • Действующие классы хостов
      • Архив
        • До 1 июня 2020 года
      • Использование устаревших классов хостов
    • Сеть в Managed Service for ClickHouse
    • Квоты и лимиты
    • Типы дисков
    • Резервные копии
    • Репликация
    • Словари
    • Шардирование
    • Техническое обслуживание
    • Поддерживаемые клиенты
    • Управление памятью в Managed Service for ClickHouse
    • Политика работы с версиями ClickHouse
    • Настройки ClickHouse
  • Управление доступом
  • Правила тарификации
    • Действующие правила
    • Архив
      • До 1 января 2019 года
      • С 1 января до 1 марта 2019 года
      • С 1 марта 2019 года до 1 февраля 2020 года
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • BackupService
      • ClusterService
      • DatabaseService
      • FormatSchemaService
      • MlModelService
      • ResourcePresetService
      • UserService
      • VersionsService
      • OperationService
    • REST (англ.)
      • Overview
      • Backup
        • Overview
        • get
        • list
      • Cluster
        • Overview
        • addHosts
        • addShard
        • addZookeeper
        • backup
        • create
        • createExternalDictionary
        • createShardGroup
        • delete
        • deleteExternalDictionary
        • deleteHosts
        • deleteShard
        • deleteShardGroup
        • get
        • getShard
        • getShardGroup
        • list
        • listBackups
        • listHosts
        • listLogs
        • listOperations
        • listShardGroups
        • listShards
        • move
        • rescheduleMaintenance
        • restore
        • start
        • stop
        • streamLogs
        • update
        • updateExternalDictionary
        • updateHosts
        • updateShard
        • updateShardGroup
      • Database
        • Overview
        • create
        • delete
        • get
        • list
      • FormatSchema
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • MlModel
        • Overview
        • create
        • delete
        • get
        • list
        • update
      • ResourcePreset
        • Overview
        • get
        • list
      • User
        • Overview
        • create
        • delete
        • get
        • grantPermission
        • list
        • revokePermission
        • update
      • Versions
        • Overview
        • list
      • Operation
        • Overview
        • get
  • История изменений
  • Вопросы и ответы
    • Общие вопросы
    • Вопросы о ClickHouse
    • Подключение
    • Изменение кластера
    • Настройки параметров кластера
    • Перемещение и восстановление кластера
    • Мониторинг и логи
    • Все вопросы на одной странице
  1. Практические руководства
  2. Поставка данных из Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer

Поставка данных из Yandex Managed Service for Apache Kafka® с помощью Yandex Data Transfer

Статья создана
Yandex Cloud
,
улучшена
Dmitry A.
  • Перед началом работы
    • Подготовьте инфраструктуру
    • Выполните дополнительные настройки
  • Отправьте тестовые данные в топик Managed Service for Apache Kafka®
  • Подготовьте и активируйте трансфер
  • Проверьте работоспособность трансфера
  • Удалите созданные ресурсы

В кластер Managed Service for ClickHouse можно в реальном времени поставлять данные из топиков Apache Kafka®. Эти данные будут автоматически вставлены в таблицы ClickHouse на движке Kafka.

Чтобы настроить поставку данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse:

  1. Отправьте тестовые данные в топик Managed Service for Apache Kafka®.
  2. Подготовьте и активируйте трансфер.
  3. Проверьте работоспособность трансфера.

Если созданные ресурсы вам больше не нужны, удалите их.

Перед началом работы

Подготовьте инфраструктуру

Вручную
С помощью Terraform
  1. Создайте кластер-источник Managed Service for Apache Kafka® любой подходящей конфигурации. Для подключения к кластеру с локальной машины пользователя, а не из облачной сети Yandex Cloud, включите публичный доступ к кластеру при его создании.

  2. Создайте топик в кластере Managed Service for Apache Kafka®.

  3. Чтобы производитель и потребитель могли работать с топиком в кластере Managed Service for Apache Kafka®, создайте пользователей:

    • с ролью ACCESS_ROLE_PRODUCER для производителя;
    • с ролью ACCESS_ROLE_CONSUMER для потребителя.
  4. Создайте кластер-приемник Managed Service for ClickHouse любой подходящей конфигурации. Для подключения к кластеру с локальной машины пользователя, а не из облачной сети Yandex Cloud, включите публичный доступ к кластеру при его создании.

  5. Настройте группы безопасности кластеров, чтобы к ним можно было подключаться из интернета:

    • Managed Service for Apache Kafka®.
    • Managed Service for ClickHouse.
  1. Если у вас еще нет Terraform, установите и настройте его.

  2. Скачайте файл с настройками провайдера. Поместите его в отдельную рабочую директорию и укажите значения параметров.

  3. Скачайте в ту же рабочую директорию файл конфигурации data-transfer-mkf-mch.tf.

    В этом файле описаны:

    • сеть;
    • подсеть;
    • группа безопасности и правила, необходимые для подключения к кластерам из интернета;
    • кластер-источник Managed Service for Apache Kafka® с описанием топика и двух пользователей, от имени которых к топику будут подключаться производитель и потребитель;
    • кластер-приемник Managed Service for ClickHouse;
    • эндпоинт для приемника;
    • трансфер.
  4. Укажите в файле data-transfer-mkf-mch.tf:

    • параметры кластера-источника Managed Service for Apache Kafka®:

      • source_user_producer и source_password_producer — имя и пароль пользователя производителя;
      • source_user_consumer и source_password_consumer — имя и пароль пользователя потребителя;
      • source_topic_name — имя топика;
    • параметры кластера-приемника Managed Service for ClickHouse, которые будут использоваться как параметры эндпоинта-приемника:

      • target_db_name — имя базы данных Managed Service for ClickHouse;
      • target_user и target_password — имя и пароль пользователя-владельца базы данных.
  5. Выполните команду terraform init в директории с конфигурационным файлом. Эта команда инициализирует провайдер, указанный в конфигурационных файлах, и позволяет работать с ресурсами и источниками данных провайдера.

  6. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  7. Создайте необходимую инфраструктуру:

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

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

Выполните дополнительные настройки

  1. Установите утилиты:

    • kafkacat — для чтения и записи данных в топик Apache Kafka®.

      sudo apt update && sudo apt install --yes kafkacat
      

      Убедитесь, что можете с ее помощью подключиться к кластерам Managed Service for Apache Kafka® через SSL.

    • clickhouse-client — для подключения к базе данных в кластере Managed Service for ClickHouse.

      1. Подключите DEB-репозиторий ClickHouse:

        sudo apt update && sudo apt install --yes apt-transport-https ca-certificates dirmngr && \
        sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4 && \
        echo "deb https://repo.clickhouse.com/deb/stable/ main/" | sudo tee \
        /etc/apt/sources.list.d/clickhouse.list
        
      2. Установите зависимости:

        sudo apt update && sudo apt install --yes clickhouse-client
        
      3. Загрузите файл конфигурации для clickhouse-client:

        mkdir --parents ~/.clickhouse-client && \
        wget "https://storage.yandexcloud.net/mdb/clickhouse-client.conf.example" \
            --output-document ~/.clickhouse-client/config.xml
        

      Убедитесь, что можете с ее помощью подключиться к кластеру Managed Service for ClickHouse через SSL.

    • jq — для потоковой обработки JSON-файлов.

      sudo apt update && sudo apt-get install --yes jq
      

Отправьте тестовые данные в топик Managed Service for Apache Kafka®

Пусть в топик Apache Kafka® поступают данные от сенсоров автомобиля. Эти данные будут передаваться в виде сообщений Apache Kafka® в формате JSON:

{
    "device_id":"iv9a94th6rztooxh5ur2",
    "datetime":"2020-06-05 17:27:00",
    "latitude":"55.70329032",
    "longitude":"37.65472196",
    "altitude":"427.5",
    "speed":"0",
    "battery_voltage":"23.5",
    "cabin_temperature":"17",
    "fuel_level":null
}

Кластер Managed Service for ClickHouse будет использовать формат данных JSONEachRow при вставке в таблицы на движке Kafka. Этот формат преобразует строки из сообщения Apache Kafka® в нужные значения столбцов.

  1. Создайте файл sample.json с тестовыми данными:

    sample.json
    {
        "device_id": "iv9a94th6rztooxh5ur2",
        "datetime": "2020-06-05 17:27:00",
        "latitude": 55.70329032,
        "longitude": 37.65472196,
        "altitude": 427.5,
        "speed": 0,
        "battery_voltage": 23.5,
        "cabin_temperature": 17,
        "fuel_level": null
    }
    
    {
        "device_id": "rhibbh3y08qmz3sdbrbu",
        "datetime": "2020-06-06 09:49:54",
        "latitude": 55.71294467,
        "longitude": 37.66542005,
        "altitude": 429.13,
        "speed": 55.5,
        "battery_voltage": null,
        "cabin_temperature": 18,
        "fuel_level": 32
    }
    
    {
        "device_id": "iv9a94th6rztooxh5ur2",
        "datetime": "2020-06-07 15:00:10",
        "latitude": 55.70985913,
        "longitude": 37.62141918,
        "altitude": 417.0,
        "speed": 15.7,
        "battery_voltage": 10.3,
        "cabin_temperature": 17,
        "fuel_level": null
    }
    
  2. Отправьте данные из файла sample.json в топик Managed Service for Apache Kafka® с помощью jq и kafkacat:

    jq -rc . sample.json | kafkacat -P \
       -b <FQDN хоста-брокера>:9091 \
       -t <имя топика> \
       -k key \
       -X security.protocol=SASL_SSL \
       -X sasl.mechanisms=SCRAM-SHA-512 \
       -X sasl.username="<имя пользователя для производителя>" \
       -X sasl.password="<пароль пользователя для производителя>" \
       -X ssl.ca.location=/usr/local/share/ca-certificates/Yandex/YandexCA.crt -Z
    

Подготовьте и активируйте трансфер

  1. Создайте эндпоинт для источника:

    • Тип базы данных — Apache Kafka.

    • Параметры эндпоинта → Настройки подключения:

      • Тип подключения — Кластер Managed Service for Apache Kafka®.

        • Кластер Managed Service for Apache Kafka® — выберите кластер-источник из списка.

        • Аутентификация:

          • Имя пользователя — укажите имя пользователя потребителя.
          • Пароль — укажите пароль пользователя потребителя.
      • Полное имя топика — укажите имя топика в кластере Managed Service for Apache Kafka®.

      • (Опционально) Расширенные настройки → Правила конвертации:

        • Формат данных — JSON.

        • Схема данных — JSON спецификация:

          Создайте и загрузите файл схемы данных в формате JSON json_schema.json:

          json_schema.json
          [
              {
                  "name": "device_id",
                  "type": "string"
              },
              {
                  "name": "datetime",
                  "type": "datetime"
              },
              {
                  "name": "latitude",
                  "type": "double"
              },
              {
                  "name": "longitude",
                  "type": "double"
              },
              {
                  "name": "altitude",
                  "type": "double"
              },
              {
                  "name": "speed",
                  "type": "double"
              },
              {
                  "name": "battery_voltage",
                  "type": "any"
              },
              {
                  "name": "cabin_temperature",
                  "type": "double"
              },
              {
                  "name": "fuel_level",
                  "type": "any"
              }
          ]
          
  2. Создайте эндпоинт для приемника и трансфер:

    Вручную
    С помощью Terraform
    1. Создайте эндпоинт для приемника:

      • Тип базы данных — ClickHouse.

      • Параметры эндпоинта:

        • Настройки подключения:

          • Тип подключения — Кластер Managed Service for ClickHouse.

            • Кластер Managed Service for ClickHouse — выберите кластер-приемник из списка.
          • База данных — укажите имя базы данных.

          • Пользователь и Пароль — укажите имя и пароль пользователя с доступом к базе, например, владельца базы данных.

        • Расширенные настройки → Загружать данные в формате JSON — включите эту опцию, если в расширенных настройках эндпоинта источника включили опцию Правила конвертации.

    2. Создайте трансфер типа Репликация, использующий созданные эндпоинты.

    3. Активируйте его.

    1. Раскомментируйте в файле data-transfer-mkf-mch.tf:

      • переменную source_endpoint_id и задайте ей значение идентификатора эндпоинта для источника, созданного на предыдущем шаге;
      • ресурсы yandex_datatransfer_endpoint и yandex_datatransfer_transfer.
    2. Проверьте корректность файлов конфигурации Terraform с помощью команды:

      terraform validate
      

      Если в файлах конфигурации есть ошибки, Terraform на них укажет.

    3. Создайте необходимую инфраструктуру:

      1. Выполните команду для просмотра планируемых изменений:

        terraform plan
        

        Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

      2. Если вас устраивают планируемые изменения, внесите их:

        1. Выполните команду:

          terraform apply
          
        2. Подтвердите изменение ресурсов.

        3. Дождитесь завершения операции.

      Трансфер активируется автоматически после создания.

Проверьте работоспособность трансфера

  1. Дождитесь перехода трансфера в статус Реплицируется.

  2. Убедитесь, что в базу данных Managed Service for ClickHouse перенеслись данные из кластера-источника Managed Service for Apache Kafka®:

    1. Подключитесь к кластеру с помощью clickhouse-client.

    2. Выполните запрос:

      SELECT * FROM <имя базы данных ClickHouse>.<имя топика Apache Kafka®>
      
  3. Измените значения в файле sample.json и отправьте данные из него в топик Managed Service for Apache Kafka®:

    jq -rc . sample.json | kafkacat -P \
       -b <FQDN хоста-брокера>:9091 \
       -t <имя топика> \
       -k key \
       -X security.protocol=SASL_SSL \
       -X sasl.mechanisms=SCRAM-SHA-512 \
       -X sasl.username="<имя пользователя для производителя>" \
       -X sasl.password="<пароль пользователя для производителя>" \
       -X ssl.ca.location=/usr/local/share/ca-certificates/Yandex/YandexCA.crt -Z
    
  4. Убедитесь, что в базе данных Managed Service for ClickHouse отобразились новые значения:

    1. Подключитесь к кластеру с помощью clickhouse-client.

    2. Выполните запрос:

      SELECT * FROM <имя базы данных ClickHouse>.<имя топика Apache Kafka®>
      

Удалите созданные ресурсы

Примечание

Перед тем как удалить созданные ресурсы, деактивируйте трансфер.

Если созданные ресурсы вам больше не нужны, удалите их:

  1. Удалите трансфер.
  2. Удалите эндпоинт для источника.

Остальные ресурсы удалите в зависимости от способа их создания:

Вручную
С помощью Terraform
  • Удалите эндпоинт для приемника.
  • Удалите кластер Managed Service for Apache Kafka®.
  • Удалите кластер Managed Service for ClickHouse.
  1. В терминале перейдите в директорию с планом инфраструктуры.

  2. Удалите конфигурационный файл data-transfer-mkf-mch.tf.

  3. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

    Если в файлах конфигурации есть ошибки, Terraform на них укажет.

  4. Подтвердите изменение ресурсов.

    1. Выполните команду для просмотра планируемых изменений:

      terraform plan
      

      Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.

    2. Если вас устраивают планируемые изменения, внесите их:

      1. Выполните команду:

        terraform apply
        
      2. Подтвердите изменение ресурсов.

      3. Дождитесь завершения операции.

    Все ресурсы, которые были описаны в конфигурационном файле data-transfer-mkf-mch.tf, будут удалены.

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Перед началом работы
  • Подготовьте инфраструктуру
  • Выполните дополнительные настройки
  • Отправьте тестовые данные в топик Managed Service for Apache Kafka®
  • Подготовьте и активируйте трансфер
  • Проверьте работоспособность трансфера
  • Удалите созданные ресурсы