Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Популярные
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • Машинное обучение
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Облако для интеграторов
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Контент-программа
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Истории успеха
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Документация
  • Блог
Проект Яндекса
© 2025 ООО «Яндекс.Облако»
Yandex Managed Service for ClickHouse®
  • Начало работы
    • Все руководства
    • Добавление данных в БД
    • Миграция данных в Managed Service for ClickHouse® средствами ClickHouse®
    • Миграция данных в Managed Service for ClickHouse® при помощи Data Transfer
    • Шардирование таблиц
    • Перешардирование данных в кластере
    • Использование гибридного хранилища
    • Получение данных из Managed Service for Apache Kafka®
    • Получение данных из RabbitMQ
    • Обмен данными с Yandex Data Processing
    • Настройка Yandex Cloud DNS для доступа к кластеру из других облачных сетей
    • Анализ логов Yandex Object Storage при помощи Yandex DataLens
    • Настройка Managed Service for ClickHouse® для Graphite
    • Сохранение потока данных Yandex Data Streams в Managed Service for ClickHouse®
    • Миграция базы данных из Google BigQuery
    • Поставка данных из Managed Service for Apache Kafka® с помощью Yandex Data Transfer
    • Миграция данных из Яндекс Директ с использованием Yandex Cloud Functions, Yandex Object Storage и Yandex Data Transfer
    • Загрузка данных из Yandex Object Storage в Managed Service for ClickHouse® с помощью Yandex Data Transfer
    • Миграция базы данных из Greenplum® в ClickHouse®
    • Миграция базы данных из MySQL® в ClickHouse® с помощью Yandex Data Transfer
    • Асинхронная репликация данных из PostgreSQL в ClickHouse®
    • Загрузка данных из Yandex Managed Service for YDB в Managed Service for ClickHouse® с помощью Yandex Data Transfer
    • Копирование данных из Managed Service for OpenSearch в Managed Service for ClickHouse® с помощью Yandex Data Transfer
    • Ввод данных в системы хранения
    • Использование параметров
    • Примеры создания QL-чартов
    • Веб-аналитика с расчетом воронок и когорт на данных Яндекс Метрики
    • AppMetrica: прямое подключение
    • AppMetrica: экспорт, постобработка и визуализация данных
    • Загрузка данных из Яндекс Метрика в витрину ClickHouse®
    • Yandex Tracker: экспорт и визуализация данных
    • Дашборд сети магазинов из БД ClickHouse®
    • Анализ продаж и локаций пиццерий на данных из БД ClickHouse® и Marketplace
    • Геокодинг с помощью API Яндекс Карт для визуализации в DataLens
    • Импорт данных из Object Storage, обработка и экспорт в Managed Service for ClickHouse®
    • Работа с данными с помощью Query
    • Федеративные запросы к данным с помощью Query
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Yandex Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
  • Обучающие курсы

В этой статье:

  • Необходимые платные ресурсы
  • Перед началом работы
  • Подготовьте инфраструктуру
  • Выполните дополнительные настройки
  • Настройте интеграцию с Apache Kafka® для кластера Managed Service for ClickHouse®
  • Создайте в кластере Managed Service for ClickHouse® таблицы на движке Kafka
  • Отправьте тестовые данные в топики Managed Service for Apache Kafka®
  • Проверьте наличие тестовых данных в таблицах кластера Managed Service for ClickHouse®
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Получение данных из Managed Service for Apache Kafka®

Получение данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse®

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

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

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

  1. Настройте интеграцию с Apache Kafka® для кластера Managed Service for ClickHouse®.
  2. Создайте в кластере Managed Service for ClickHouse® таблицы на движке Kafka.
  3. Отправьте тестовые данные в топики Managed Service for Apache Kafka®.
  4. Проверьте наличие тестовых данных в таблицах кластера Managed Service for ClickHouse®.

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

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки описываемого решения входят:

  • Плата за кластеры Managed Service for Apache Kafka®: использование вычислительных ресурсов, выделенных хостам (в том числе хостам ZooKeeper), и дискового пространства (см. тарифы Apache Kafka®).
  • Плата за кластер Managed Service for ClickHouse®: использование вычислительных ресурсов, выделенных хостам (в том числе хостам ZooKeeper), и дискового пространства (см. тарифы Managed Service for ClickHouse®).
  • Плата за использование публичных IP-адресов, если для хостов кластеров включен публичный доступ (см. тарифы Virtual Private Cloud).

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

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

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

  2. Создайте кластер Managed Service for ClickHouse® с одним шардом и базой данных db1. Для подключения к кластеру с локальной машины пользователя, а не из облачной сети Yandex Cloud, включите публичный доступ к кластеру при его создании.

    Примечание

    Интеграцию с Apache Kafka® можно настроить уже на этапе создания кластера. В этом практическом руководстве интеграция будет настроена позже.

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

    • Инструкция для Managed Service for Apache Kafka®.
    • Инструкция для Managed Service for ClickHouse®.
  4. Создайте необходимое количество топиков в кластерах Managed Service for Apache Kafka®. Имена топиков не должны повторяться.

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

    • пользователь с ролью ACCESS_ROLE_PRODUCER для производителя;
    • пользователь с ролью ACCESS_ROLE_CONSUMER для потребителя.

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

  1. Если у вас еще нет Terraform, установите его.

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

  3. Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его.

  4. Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.

  5. Скачайте в ту же рабочую директорию файл конфигурации data-from-kafka-to-clickhouse.tf.

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

    • Сеть.

    • Подсеть.

    • Группа безопасности по умолчанию и правила, необходимые для подключения к кластерам из интернета.

    • Кластер Managed Service for Apache Kafka®.

    • Топик и два пользователя Managed Service for Apache Kafka®, от имени которых к топику будут подключаться производитель и потребитель, соответственно.

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

    • Кластер Managed Service for ClickHouse® с одним шардом и базой данных db1.

  6. Укажите в файле data-from-kafka-to-clickhouse.tf:

    • версию Managed Service for Apache Kafka®;
    • имена и пароли пользователей с ролями ACCESS_ROLE_PRODUCER и ACCESS_ROLE_CONSUMER кластеров Managed Service for Apache Kafka®;
    • имена топиков кластеров Managed Service for Apache Kafka®;
    • имя пользователя и пароль, которые будут использоваться для доступа к кластеру Managed Service for ClickHouse®.
  7. Проверьте корректность файлов конфигурации Terraform с помощью команды:

    terraform validate
    

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

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

    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://packages.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 -p ~/.clickhouse-client && \
        wget "https://storage.yandexcloud.net/doc-files/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
      

Настройте интеграцию с Apache Kafka® для кластера Managed Service for ClickHouse®Настройте интеграцию с Apache Kafka® для кластера Managed Service for ClickHouse®

Вручную
Terraform

В зависимости от количества кластеров Managed Service for Apache Kafka®:

  • Если кластер Apache Kafka® один, укажите данные для аутентификации в секции Настройки СУБД → Kafka. В этом случае кластер Managed Service for ClickHouse® будет использовать эти данные для аутентификации при обращении к любому топику.
  • Если кластеров Apache Kafka® несколько, укажите данные для аутентификации каждого топика Managed Service for Apache Kafka® в настройках кластера Managed Service for ClickHouse® в секции Настройки СУБД → Kafka topics.

Данные для аутентификации:

  • Name — имя топика (для нескольких кластеров Apache Kafka®).
  • Sasl mechanism — SCRAM-SHA-512.
  • Sasl password — пароль пользователя для потребителя.
  • Sasl username — имя пользователя для потребителя.
  • Security protocol — SASL_SSL.
  1. В зависимости от количества кластеров Managed Service for Apache Kafka®:

    • Если кластер Apache Kafka® один, раскомментируйте в файле data-from-kafka-to-clickhouse.tf блок clickhouse.config.kafka:

      config {
          kafka {
              security_protocol = "SECURITY_PROTOCOL_SASL_SSL"
              sasl_mechanism    = "SASL_MECHANISM_SCRAM_SHA_512"
              sasl_username     = "<имя_пользователя_для_потребителя>"
              sasl_password     = "<пароль_пользователя_для_потребителя>"
          }
      }
      
    • Если кластеров Apache Kafka® несколько, раскомментируйте блок clickhouse.config.kafka_topic, указав данные для аутентификации каждого топика Managed Service for Apache Kafka®:

      config {
          kafka_topic {
              name = "<имя_топика>"
              settings {
              security_protocol = "SECURITY_PROTOCOL_SASL_SSL"
              sasl_mechanism    = "SASL_MECHANISM_SCRAM_SHA_512"
              sasl_username     = "<имя_пользователя_для_потребителя>"
              sasl_password     = "<пароль_пользователя_для_потребителя>"
              }
          }
      }
      

      Если в кластерах несколько топиков, продублируйте блок kafka_topic необходимое количество раз, указав соответствующие имена топиков.

  2. Проверьте корректность настроек.

    1. В командной строке перейдите в каталог, в котором расположены актуальные конфигурационные файлы Terraform с планом инфраструктуры.

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

      terraform validate
      

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

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

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

      terraform plan
      

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

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

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

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

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

Создайте в кластере Managed Service for ClickHouse® таблицы на движке KafkaСоздайте в кластере Managed Service for ClickHouse® таблицы на движке Kafka

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

{"device_id":"iv9a94th6rzt********","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® будет использовать при вставке в таблицы на движке Kafka формат данных JSONEachRow, который преобразует строки из сообщения Apache Kafka® в нужные значения столбцов.

Для каждого из топиков Apache Kafka® создайте в кластере Managed Service for ClickHouse® отдельную таблицу, куда будут заноситься поступающие данные:

  1. Подключитесь к базе данных db1 кластера Managed Service for ClickHouse® с помощью clickhouse-client.

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

    CREATE TABLE IF NOT EXISTS db1.<имя_таблицы_для_топика>
    (
        device_id String,
        datetime DateTime,
        latitude Float32,
        longitude Float32,
        altitude Float32,
        speed Float32,
        battery_voltage Nullable(Float32),
        cabin_temperature Float32,
        fuel_level Nullable(Float32)
    ) ENGINE = Kafka()
    SETTINGS
        kafka_broker_list = '<FQDN_хоста-брокера>:9091',
        kafka_topic_list = '<имя_топика>',
        kafka_group_name = 'sample_group',
        kafka_format = 'JSONEachRow';
    

Созданные таблицы будут автоматически наполняться сообщениями, считываемыми из топиков Managed Service for Apache Kafka®. При чтении данных Managed Service for ClickHouse® использует указанные ранее настройки для пользователей с ролью ACCESS_ROLE_CONSUMER.

Подробнее о создании таблиц на движке Kafka см. в документации ClickHouse®.

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

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

    {
        "device_id": "iv9a94th6rzt********",
        "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": "rhibbh3y08qm********",
        "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": "iv9a94th6rzt********",
        "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/RootCA.crt -Z
    

Данные отправляются от имени пользователей с ролью ACCESS_ROLE_PRODUCER. Подробнее о настройке SSL-сертификата и работе с kafkacat см. в разделе Подключение к кластеру Apache Kafka® из приложений.

Проверьте наличие тестовых данных в таблицах кластера Managed Service for ClickHouse®Проверьте наличие тестовых данных в таблицах кластера Managed Service for ClickHouse®

Для доступа к данным используйте материализованное представление. Когда к таблице на движке Kafka присоединяется материализованное представление, оно начинает в фоновом режиме собирать данные. Это позволяет непрерывно получать сообщения от Apache Kafka® и преобразовывать их в необходимый формат с помощью SELECT.

Примечание

Сообщение из топика может быть прочитано ClickHouse® только один раз, поэтому не рекомендуется считывать данные из таблицы напрямую.

Чтобы создать такое представление:

  1. Подключитесь к базе данных db1 кластера Managed Service for ClickHouse® с помощью clickhouse-client.

  2. Для каждой таблицы на движке Kafka выполните запросы:

    CREATE TABLE db1.temp_<имя_таблицы_для_топика>
    (
        device_id String,
        datetime DateTime,
        latitude Float32,
        longitude Float32,
        altitude Float32,
        speed Float32,
        battery_voltage Nullable(Float32),
        cabin_temperature Float32,
        fuel_level Nullable(Float32)
    ) ENGINE = MergeTree()
    ORDER BY device_id;
    
    CREATE MATERIALIZED VIEW db1.<имя_представления> TO db1.temp_<имя_таблицы_для_топика>
        AS SELECT * FROM db1.<имя_таблицы_для_топика>;
    

Чтобы получить все данные из нужного материализованного представления:

  1. Подключитесь к базе данных db1 кластера Managed Service for ClickHouse® с помощью clickhouse-client.

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

    SELECT * FROM db1.<имя_представления>;
    

Запрос вернет таблицу с данными, отправленными в соответствующий топик Managed Service for Apache Kafka®.

Подробнее о работе с данными, поставляемыми из Apache Kafka®, см. в документации ClickHouse®.

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

Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:

Вручную
Terraform
  • Удалите кластеры:

    • Yandex Managed Service for ClickHouse®;
    • Yandex Managed Service for Apache Kafka®.
  • Если вы зарезервировали для кластеров публичные статические IP-адреса, освободите и удалите их.

  1. В терминале перейдите в директорию с планом инфраструктуры.

    Важно

    Убедитесь, что в директории нет Terraform-манифестов с ресурсами, которые вы хотите сохранить. Terraform удаляет все ресурсы, которые были созданы с помощью манифестов в текущей директории.

  2. Удалите ресурсы:

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

      terraform destroy
      
    2. Подтвердите удаление ресурсов и дождитесь завершения операции.

    Все ресурсы, которые были описаны в Terraform-манифестах, будут удалены.

ClickHouse® является зарегистрированным товарным знаком ClickHouse, Inc.

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

Предыдущая
Использование гибридного хранилища
Следующая
Получение данных из RabbitMQ
Проект Яндекса
© 2025 ООО «Яндекс.Облако»