Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Router
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Managed Service for YDB
    • SpeechKit
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • Container Registry
    • Managed Service for Prometheus®
    • Message Queue
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Cloud Apps
    • Yandex AI Studio
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Yandex Cloud Video
    • Stackland
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • DataSphere
    • Vision OCR
    • Translate
    • Cloud Registry
    • SmartCaptcha
    • Cloud Desktop
    • Yandex SIEM
    • SourceCraft Code Assistant
    • Managed Service for GitLab
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • IoT Core
    • Serverless Containers
    • Cloud Notification Service
    • Yandex Query
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
  • Кейсы
  • Документация
  • Блог
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Практические руководства
    • Все руководства
      • Добавление данных в БД ClickHouse®
      • Получение данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse®
      • Получение данных из Managed Service for Apache Kafka® в ksqlDB
      • Получение данных из RabbitMQ в Managed Service for ClickHouse®
      • Миграция данных в Managed Service for ClickHouse® средствами ClickHouse®
      • Миграция данных в Managed Service for ClickHouse® при помощи Data Transfer
      • Миграция базы данных из Google BigQuery в Managed Service for ClickHouse®
      • Миграция данных со сменой хранилища из Managed Service for OpenSearch в Managed Service for ClickHouse® с помощью Data Transfer
      • Поставка данных из Managed Service for MySQL® в Managed Service for ClickHouse® с помощью Data Transfer
      • Обмен данными между Managed Service for ClickHouse® и Yandex Data Processing
      • Настройка Managed Service for ClickHouse® для Graphite
      • Сохранение потока данных Data Streams в Managed Service for ClickHouse®
      • Асинхронная репликация данных из PostgreSQL в ClickHouse®
      • Асинхронная репликация данных из Яндекс Метрика в ClickHouse® с помощью Data Transfer
      • Использование гибридного хранилища в Managed Service for ClickHouse®
      • Шардирование таблиц Managed Service for ClickHouse®
      • Выполнение аналитических запросов в Managed Service for PostgreSQL с обработкой в Managed Service for ClickHouse®
      • Загрузка данных из Яндекс Директ в витрину Managed Service for ClickHouse® с использованием Cloud Functions, Object Storage и Data Transfer
      • Загрузка данных из Object Storage в Managed Service for ClickHouse® с помощью Data Transfer
      • Загрузка данных из Managed Service for YDB в Managed Service for ClickHouse® с помощью Data Transfer
      • Интеграция Yandex Managed Service for ClickHouse® с Microsoft SQL Server через ClickHouse® JDBC Bridge
      • Интеграция Yandex Managed Service for ClickHouse® с Oracle через ClickHouse® JDBC Bridge

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

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Настройте интеграцию с Apache Kafka® для базы ksqlDB
  • Изучите формат данных, поступающих от Managed Service for Apache Kafka®
  • Создайте в ksqlDB таблицу для записи потока данных из топика Apache Kafka®
  • Получите тестовые данные из кластера Managed Service for Apache Kafka®
  • Запишите тестовые данные в ksqlDB
  • Проверьте наличие записей в топиках Apache Kafka®
  • Удалите созданные ресурсы
  1. Построение Data Platform
  2. ClickHouse®
  3. Получение данных из Managed Service for Apache Kafka® в ksqlDB

Поставка данных в ksqlDB

Статья создана
Yandex Cloud
Обновлена 14 октября 2026 г.
Открыть в Markdown
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Настройте интеграцию с Apache Kafka® для базы ksqlDB
  • Изучите формат данных, поступающих от Managed Service for Apache Kafka®
  • Создайте в ksqlDB таблицу для записи потока данных из топика Apache Kafka®
  • Получите тестовые данные из кластера Managed Service for Apache Kafka®
  • Запишите тестовые данные в ksqlDB
  • Проверьте наличие записей в топиках Apache Kafka®
  • Удалите созданные ресурсы

ksqlDB — это база данных, которая предназначена для потоковой обработки сообщений, поступающих из топиков Apache Kafka®. Работа с потоком сообщений в ksqlDB похожа на работу с таблицами в обычной базе данных. Таблица ksqlDB автоматически пополняется данными, поступающими из топика, а данные, которые вы добавите в таблицу ksqlDB, отправляются в топик Apache Kafka®. Подробнее в документации ksqlDB.

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

  1. Подготовьте инфраструктуру.
  2. Настройте интеграцию с Apache Kafka® для базы ksqlDB.
  3. Изучите формат данных, поступающих от Managed Service for Apache Kafka®.
  4. Создайте в ksqlDB таблицу для записи потока данных из топика Apache Kafka®.
  5. Получите тестовые данные из кластера Managed Service for Apache Kafka®
  6. Запишите тестовые данные в ksqlDB.
  7. Проверьте наличие тестовых данных в топике Apache Kafka®.

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

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

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

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

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

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

  1. Создайте кластер Managed Service for Apache Kafka® любой подходящей вам конфигурации:

    • Если сервер ksqlDB размещен в интернете, создайте кластер Managed Service for Apache Kafka® с публичным доступом.

    • Если сервер ksqlDB размещен в Yandex Cloud, создайте кластер Managed Service for Apache Kafka® в той же облачной сети, где находится ksqlDB.

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

    1. Служебный топик default_ksql_processing_log для записи логов ksqlDB. Настройки топика могут быть любыми.
    2. Топик для хранения данных locations. Настройки топика могут быть любыми.
  3. Создайте пользователя с именем ksql и назначьте ему роль ACCESS_ROLE_ADMIN для всех топиков.

  4. Убедитесь, что вы можете подключиться к серверу ksqlDB.

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

  6. Установите утилиту для потоковой обработки JSON-файлов jq на сервер ksqlDB.

Настройте интеграцию с Apache Kafka® для базы ksqlDBНастройте интеграцию с Apache Kafka® для базы ksqlDB

  1. Подключитесь к серверу ksqlDB.

  2. Перейдите в директорию /etc/ksqldb:

    cd /etc/ksqldb
    
  3. Добавьте SSL-сертификат в хранилище доверенных сертификатов Java (Java Key Store), чтобы ksqlDB мог использовать этот сертификат при защищенном подключении к хостам кластера:

    Linux (Bash)
    macOS (Zsh)
    awk '/-----BEGIN CERTIFICATE-----/ {n++} n {print > "YandexCA-" n ".crt"}' \
      < /usr/local/share/ca-certificates/Yandex/YandexInternalRootCA.crt
    
    for cert in YandexCA-*.crt; do
      alias=$(
        openssl x509 -noout -text -in "${cert}" |
        perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print'
      )
    
      year=$(openssl x509 -noout -enddate -in "${cert}" | awk '{print $(NF-1)}')
    
      echo "Importing ${alias}-${year}"
    
      keytool -importcert \
              -alias "${alias}-${year}" \
              -file "${cert}" \
              -keystore ssl \
              -storepass <пароль_защищенного_хранилища> \
              -noprompt
    
      rm "${cert}"
    done
    
    chmod 0655 ssl
    
    split -p "-----BEGIN CERTIFICATE-----" \
      /usr/local/share/ca-certificates/Yandex/YandexInternalRootCA.crt \
      YandexCA-
    
    for cert in YandexCA-*.crt; do
      alias=$(
        openssl x509 -noout -text -in "${cert}" |
        perl -ne 'next unless /Subject:/; s/.*(CN=|CN = )//; print'
       )
    
      year=$(openssl x509 -noout -enddate -in "${cert}" | awk '{print $(NF-1)}')
    
      echo "Importing ${alias}-${year}"
    
      keytool -importcert \
              -alias "${alias}-${year}" \
              -file "${cert}" \
              -keystore ssl \
              -storepass <пароль_защищенного_хранилища> \
              -noprompt
    
      rm "${cert}"
    done
    
    chmod 0655 ssl
    

    Где -storepass — пароль хранилища сертификатов. Пароль должен содержать не менее 6 символов.

  4. Укажите в файле конфигурации ksqlDB /etc/ksqldb/ksql-server.properties данные для аутентификации в кластере Managed Service for Apache Kafka®:

    bootstrap.servers=<FQDN_брокера_1>:9091,...,<FQDN_брокера_N>:9091
    sasl.mechanism=SCRAM-SHA-512
    security.protocol=SASL_SSL
    ssl.truststore.location=/etc/ksqldb/ssl
    ssl.truststore.password=<пароль_хранилища_сертификатов>
    sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="ksql" password="<пароль_пользователя_ksql>";
    

    Как получить FQDN хоста-брокера, читайте в инструкции.

    Имя кластера можно запросить со списком кластеров в каталоге.

  5. Укажите в файле параметров логирования ksqlDB /etc/ksqldb/log4j.properties настройки записи логов в топик кластера Managed Service for Apache Kafka®:

    log4j.appender.kafka_appender=org.apache.kafka.log4jappender.KafkaLog4jAppender
    log4j.appender.kafka_appender.layout=io.confluent.common.logging.log4j.StructuredJsonLayout
    log4j.appender.kafka_appender.BrokerList=<FQDN_брокера_1>:9091,...,<FQDN_брокера_N>:9091
    log4j.appender.kafka_appender.Topic=default_ksql_processing_log
    log4j.logger.io.confluent.ksql=INFO,kafka_appender
    
    log4j.appender.kafka_appender.clientJaasConf=org.apache.kafka.common.security.scram.ScramLoginModule required username="ksql" password="<пароль_пользователя_ksql>";
    log4j.appender.kafka_appender.SecurityProtocol=SASL_SSL
    log4j.appender.kafka_appender.SaslMechanism=SCRAM-SHA-512
    log4j.appender.kafka_appender.SslTruststoreLocation=/etc/ksqldb/ssl
    log4j.appender.kafka_appender.SslTruststorePassword=<пароль_хранилища_сертификатов>
    
  6. Перезапустите сервис ksqlDB командой:

    sudo systemctl restart confluent-ksqldb.service
    

Изучите формат данных, поступающих от Managed Service for Apache Kafka®Изучите формат данных, поступающих от Managed Service for Apache Kafka®

Обработка потока данных из Managed Service for Apache Kafka® зависит от формата представления в сообщении Apache Kafka®.

В примере в топик Apache Kafka® locations будут записываться геоданные в формате JSON:

  • идентификатор profileId;
  • широта latitude;
  • долгота longitude;

Эти данные будут передаваться в виде сообщений Apache Kafka®. Каждое такое сообщение будет содержать JSON-объект как строку следующего вида:

{"profileId": "c2309eec", "latitude": 37.7877, "longitude": -122.4205}

База ksqlDB будет использовать таблицу из трех столбцов, в которой хранятся значения соответствующих параметров из сообщений Apache Kafka®.

Далее выполним настройку полей потоковой таблицы в базе ksqlDB.

Создайте в ksqlDB таблицу для записи потока данных из топика Apache Kafka®Создайте в ksqlDB таблицу для записи потока данных из топика Apache Kafka®

Чтобы записывать информацию из топика Apache Kafka®, создайте в базе ksqlDB таблицу. Структура таблицы соответствует формату данных, которые поступают из Managed Service for Apache Kafka®:

  1. Подключитесь к серверу ksqlDB.

  2. Запустите клиент ksql командой:

    ksql http://0.0.0.0:8088
    
  3. Выполните запрос:

    CREATE STREAM riderLocations 
    (
      profileId VARCHAR,
      latitude DOUBLE,
      longitude DOUBLE
    ) WITH 
    (
      kafka_topic='locations', 
      value_format='json', 
      partitions=<количество_разделов_топика_"locations">
    );
    

    Эта потоковая таблица будет автоматически наполняться сообщениями из топика locations кластера Managed Service for Apache Kafka®. Для чтения сообщений ksqlDB использует настройки пользователя ksql.

    Подробнее о создании потоковой таблицы на движке ksqlDB смотрите в документации ksqlDB.

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

    SELECT * FROM riderLocations WHERE 
             GEO_DISTANCE(latitude, longitude, 37.4133, -122.1162) <= 5 
             EMIT CHANGES;
    

    Запрос ожидает появления данных в таблице в реальном времени.

Получите тестовые данные из кластера Managed Service for Apache Kafka®Получите тестовые данные из кластера Managed Service for Apache Kafka®

  1. Подключитесь к серверу ksqlDB.

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

    {
      "profileId": "c2309eec", 
      "latitude": 37.7877,
      "longitude": -122.4205
    }
    
    {
      "profileId": "4ab5cbad", 
      "latitude": 37.3952,
      "longitude": -122.0813
    }
    
    {
      "profileId": "4a7c7b41", 
      "latitude": 37.4049,
      "longitude": -122.0822
    }   
    
  3. Отправьте файл sample.json в топик locations кластера Managed Service for Apache Kafka® с помощью jq и kafkacat:

    jq -rc . sample.json | kafkacat -P \
       -b <FQDN_брокера_1>:9091,...,<FQDN_брокера_N>:9091> \
       -t locations \
       -X security.protocol=SASL_SSL \
       -X sasl.mechanisms=SCRAM-SHA-512 \
       -X sasl.username=ksql \
       -X sasl.password="<пароль_пользователя_ksql>" \
       -X ssl.ca.location=/usr/local/share/ca-certificates/Yandex/YandexInternalRootCA.crt -Z
    

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

  4. Убедитесь, что в сессии отобразились данные, которые были отправлены в топик:

    +--------------------------+--------------------------+------------------------+
    |PROFILEID                 |LATITUDE                  |LONGITUDE               |
    +--------------------------+--------------------------+------------------------+
    |4ab5cbad                  |37.3952                   |-122.0813               | 
    |4a7c7b41                  |37.4049                   |-122.0822               |
    

Данные считываются с помощью пользователя ksql.

Запишите тестовые данные в ksqlDBЗапишите тестовые данные в ksqlDB

  1. Подключитесь к серверу ksqlDB.

  2. Запустите клиент ksql командой:

    ksql http://0.0.0.0:8088
    
  3. Вставьте тестовые данные в таблицу riderLocations:

    INSERT INTO riderLocations (profileId, latitude, longitude) VALUES ('18f4ea86', 37.3903, -122.0643);
    INSERT INTO riderLocations (profileId, latitude, longitude) VALUES ('8b6eae59', 37.3944, -122.0813);
    INSERT INTO riderLocations (profileId, latitude, longitude) VALUES ('4ddad000', 37.7857, -122.4011);
    

    Эти данные синхронно отправляются в топик Apache Kafka® locations с помощью пользователя ksql.

Проверьте наличие записей в топиках Apache Kafka®Проверьте наличие записей в топиках Apache Kafka®

  1. Проверьте сообщения в топике locations кластера Managed Service for Apache Kafka® с помощью kafkacat и пользователя ksql:

    kafkacat -C \
     -b <FQDN_брокера_1>:9091,...,<FQDN_брокера_N>:9091 \
     -t locations \
     -X security.protocol=SASL_SSL \
     -X sasl.mechanisms=SCRAM-SHA-512 \
     -X sasl.username=ksql \
     -X sasl.password="<пароль_пользователя_ksql>" \
     -X ssl.ca.location=/usr/local/share/ca-certificates/Yandex/YandexInternalRootCA.crt -Z -K:
    
  2. Убедитесь, что в консоли отображаются сообщения, которые вы записали в таблицу.

  3. Проверьте сообщения в топике default_ksql_processing_log кластера Managed Service for Apache Kafka® с помощью kafkacat и пользователя ksql:

    kafkacat -C \
     -b <FQDN_брокера_1>:9091,...,<FQDN_брокера_N>:9091 \
     -t default_ksql_processing_log \
     -X security.protocol=SASL_SSL \
     -X sasl.mechanisms=SCRAM-SHA-512 \
     -X sasl.username=ksql \
     -X sasl.password="<пароль_пользователя_ksql>" \
     -X ssl.ca.location=/usr/local/share/ca-certificates/Yandex/YandexInternalRootCA.crt -Z -K:
    
  4. Убедитесь, что в консоли отображаются записи лога ksqlDB.

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

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

  • Удалите виртуальную машину.
  • Если вы зарезервировали для виртуальной машины публичный статический IP-адрес, удалите его.
  • Удалите кластер Managed Service for Apache Kafka®.

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

Предыдущая
Получение данных из Managed Service for Apache Kafka® в Managed Service for ClickHouse®
Следующая
Получение данных из RabbitMQ в Managed Service for ClickHouse®
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»