Интеграция поддержки Apache Kafka Connect в Центрах событий Azure (предварительная версия)Integrate Apache Kafka Connect support on Azure Event Hubs (Preview)

По мере увеличения бизнес-потребностей увеличиваются требования по приему из различных внешних источников и приемников.As ingestion for business needs increases, so does the requirement to ingest for various external sources and sinks. Apache Kafka Connect предоставляет такую платформу для подключения, импорта и экспорта данных в любую внешнюю систему или из нее, например MySQL, HDFS и файловую систему, через кластер Kafka.Apache Kafka Connect provides such framework to connect and import/export data from/to any external system such as MySQL, HDFS, and file system through a Kafka cluster. В этом руководстве описано использование платформы Kafka Connect с Центрами событий с поддержкой Kafka.This tutorial walks you through using Kafka Connect framework with Kafka-enabled Event Hubs.

В этом руководстве описана интеграция Kafka Connect с Центрами событий с поддержкой Kafka и развертывание соединителей FileStreamSource и FileStreamSink.This tutorial walks you through integrating Kafka Connect with a Kafka-enabled Azure event hub and deploying basic FileStreamSource and FileStreamSink connectors. Эта функция в настоящее время находится на стадии предварительной версии.This feature is currently in preview. Хотя эти соединители не предназначены для использования в рабочей среде, они показывают комплексный сценарий Kafka Connect, в котором Центры событий Azure действуют в качестве брокера Kafka.While these connectors are not meant for production use, they demonstrate an end-to-end Kafka Connect scenario where Azure Event Hubs acts as a Kafka broker.

Примечание

Этот пример можно найти на сайте GitHub.This sample is available on GitHub.

При работе с этим руководством вы выполните следующие задачи:In this tutorial, you take the following steps:

  • Создание пространства имен в Центрах событийCreate an Event Hubs namespace
  • Клонирование примера проектаClone the example project
  • Настройка Kafka Connect для Центров событийConfigure Kafka Connect for Event Hubs
  • Выполнение Kafka ConnectRun Kafka Connect
  • Создание соединителейCreate connectors

Предварительные требованияPrerequisites

Для работы с этим пошаговым руководством выполните следующие предварительные требования:To complete this walkthrough, make sure you have the following prerequisites:

Создание пространства имен в Центрах событийCreate an Event Hubs namespace

Для отправки и получения данных из любой службы Центров событий требуется пространство имен Центров событий.An Event Hubs namespace is required to send and receive from any Event Hubs service. Инструкции о получении конечной точки Kafka концентраторов событий см. в статье Creating a Kafka enabled Event Hub (Создание концентраторов событий с поддержкой Kafka).See Creating a Kafka enabled Event Hub for instructions on getting an Event Hubs Kafka endpoint. Получите строку подключения Центров событий и полное доменное имя (FQDN) для последующего использования.Get the Event Hubs connection string and fully qualified domain name (FQDN) for later use. Инструкции см. в статье Get an Event Hubs connection string (Получение строки подключения для Центров событий).For instructions, see Get an Event Hubs connection string.

Клонирование примера проектаClone the example project

Клонируйте репозиторий Центров событий Azure и перейдите к руководствам или вложенной папке подключения:Clone the Azure Event Hubs repository and navigate to the tutorials/connect subfolder:

git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/connect

Настройка Kafka Connect для Центров событийConfigure Kafka Connect for Event Hubs

Минимальная перенастройка необходима при перенаправлении пропускной способности Kafka в Центры событий.Minimal reconfiguration is necessary when redirecting Kafka Connect throughput from Kafka to Event Hubs. Следующий пример connect-distributed.properties показывает, как настроить Connect для проверки подлинности и обмена данных с конечной точкой Kafka в Центрах событий:The following connect-distributed.properties sample illustrates how to configure Connect to authenticate and communicate with the Kafka endpoint on Event Hubs:

bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093 # e.g. namespace.servicebus.windows.net:9093
group.id=connect-cluster-group

# connect internal topic names, auto-created if not exists
config.storage.topic=connect-cluster-configs
offset.storage.topic=connect-cluster-offsets
status.storage.topic=connect-cluster-status

# internal topic replication factors - auto 3x replication in Azure Storage
config.storage.replication.factor=1
offset.storage.replication.factor=1
status.storage.replication.factor=1

rest.advertised.host.name=connect
offset.flush.interval.ms=10000

key.converter=org.apache.kafka.connect.json.JsonConverter
value.converter=org.apache.kafka.connect.json.JsonConverter
internal.key.converter=org.apache.kafka.connect.json.JsonConverter
internal.value.converter=org.apache.kafka.connect.json.JsonConverter

internal.key.converter.schemas.enable=false
internal.value.converter.schemas.enable=false

# required EH Kafka security settings
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{YOUR.EVENTHUBS.CONNECTION.STRING}";

producer.security.protocol=SASL_SSL
producer.sasl.mechanism=PLAIN
producer.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{YOUR.EVENTHUBS.CONNECTION.STRING}";

consumer.security.protocol=SASL_SSL
consumer.sasl.mechanism=PLAIN
consumer.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{YOUR.EVENTHUBS.CONNECTION.STRING}";

plugin.path={KAFKA.DIRECTORY}/libs # path to the libs directory within the Kafka release

Выполнение Kafka ConnectRun Kafka Connect

На этом этапе рабочая роль Kafka Connect запускается локально в распределенном режиме с помощью Центров событий для поддержания состояния кластера.In this step, a Kafka Connect worker is started locally in distributed mode, using Event Hubs to maintain cluster state.

  1. Сохраните файл connect-distributed.properties, указанный выше, локально.Save the above connect-distributed.properties file locally. Не забудьте заменить все значения в фигурных скобках.Be sure to replace all values in braces.
  2. Перейдите к расположению выпуска Kafka на своем компьютере.Navigate to the location of the Kafka release on your machine.
  3. Запустите ./bin/connect-distributed.sh /PATH/TO/connect-distributed.properties.Run ./bin/connect-distributed.sh /PATH/TO/connect-distributed.properties. REST API рабочей роли Connect готов к взаимодействию при появлении 'INFO Finished starting connectors and tasks'.The Connect worker REST API is ready for interaction when you see 'INFO Finished starting connectors and tasks'.

Примечание

Центры событий поддерживают клиенты Kafka, создавая разделы автоматически.Event Hubs supports Kafka clients creating topics automatically. Быстрая проверка пространства имен на портале Azure показывает, что внутренние разделы рабочей роли Connect были созданы автоматически.A quick check of the namespace in the Azure portal reveals that the Connect worker's internal topics have been created automatically.

Создание соединителейCreate connectors

В этом разделе показано использование соединителей FileStreamSource и FileStreamSink.This section walks you through spinning up FileStreamSource and FileStreamSink connectors.

  1. Создайте каталог для файлов входных и выходных данных.Create a directory for input and output data files.

    mkdir ~/connect-quickstart
    
  2. Создайте два файла. Один файл с начальными данными, которые читает соединитель FileStreamSource, и другой, в который соединитель FileStreamSink выполняет запись.Create two files: one file with seed data from which the FileStreamSource connector reads, and another to which our FileStreamSink connector writes.

    seq 1000 > ~/connect-quickstart/input.txt
    touch ~/connect-quickstart/output.txt
    
  3. Создайте соединитель FileStreamSource.Create a FileStreamSource connector. Обязательно замените фигурные скобки своим домашним каталогом.Be sure to replace the curly braces with your home directory path.

    curl -s -X POST -H "Content-Type: application/json" --data '{"name": "file-source","config": {"connector.class":"org.apache.kafka.connect.file.FileStreamSourceConnector","tasks.max":"1","topic":"connect-quickstart","file": "{YOUR/HOME/PATH}/connect-quickstart/input.txt"}}' http://localhost:8083/connectors
    

    Вы должны увидеть connect-quickstart Центра событий в экземпляре Центров событий после выполнения предыдущей команды.You should see the Event Hub connect-quickstart on your Event Hubs instance after running the above command.

  4. Проверьте состояние соединителя источника.Check status of source connector.

    curl -s http://localhost:8083/connectors/file-source/status
    

    При необходимости, чтобы убедиться, что события были получены из раздела connect-quickstart, можно использовать Explorer служебной шины.Optionally, you can use Service Bus Explorer to verify that events have arrived in the connect-quickstart topic.

  5. Создайте соединитель FileStreamSink.Create a FileStreamSink Connector. Еще раз убедитесь, что вы заменили фигурные скобки своим путем к домашнему каталогу.Again, make sure you replace the curly braces with your home directory path.

    curl -X POST -H "Content-Type: application/json" --data '{"name": "file-sink", "config": {"connector.class":"org.apache.kafka.connect.file.FileStreamSinkConnector", "tasks.max":"1", "topics":"connect-quickstart", "file": "{YOUR/HOME/PATH}/connect-quickstart/output.txt"}}' http://localhost:8083/connectors
    
  6. Проверьте состояние соединителя приемника.Check the status of sink connector.

    curl -s http://localhost:8083/connectors/file-sink/status
    
  7. Убедитесь, что данные реплицированы между файлами и что данные будут одинаковыми для обоих файлов.Verify that data has been replicated between files and that the data is identical across both files.

    # read the file
    cat ~/connect-quickstart/output.txt
    # diff the input and output files
    diff ~/connect-quickstart/input.txt ~/connect-quickstart/output.txt
    

ОчисткаCleanup

Kafka Connect создает разделы Центра событий для хранения конфигураций, смещений и состояния, которые сохраняются даже после завершения работы кластера Connect.Kafka Connect creates Event Hub topics to store configurations, offsets, and status that persist even after the Connect cluster has been taken down. Если этого не требуется, рекомендуется удалить эти разделы.Unless this persistence is desired, it is recommended that these topics are deleted. Вы можете также удалить Центр событий connect-quickstart, который был создан при выполнении данного пошагового руководства.You may also want to delete the connect-quickstart Event Hub that were created during the course of this walkthrough.

Дополнительная информацияNext steps

Дополнительные сведения о Центрах событий и Центрах событий для Kafka см. в статьях:To learn more about Event Hubs and Event Hubs for Kafka, see the following topic: