В прошлый раз мы говорили про утилиту зеркального копирования Mirror Maker. Сегодня поговорим про утилиту интегорации Kafka Connect. Читайте далее про особенности Kafka Connect, благодаря которой Apache Kafka легко взаимодействует с различными Big Data хранилищами и базами данных.
Для чего нужна утилита Kafka Connect
Кафка Коннект — это утилита брокера сообщений Apache Kafka, которая отвечает за перемещение данных между Kafka и другими хранилищами больших данных. Kafka Connect выполняется в виде кластера процессов-исполнителей (worker processes) посредством плагинов-коннекторов. Плагины-коннекторы — это исполняемые библиотеки утилиты Кафка Коннект, отвечающие за перемещение данных между брокером Kafka и каким-либо Big Data хранилищем (например, Amazon AWS S3, Elasticsearch и т.д.). На каждом процессе-исполнителе устанавливаются коннекторы, которые запускают задачи (tasks) для параллельного перемещения больших объемов данных и эффективного использования доступных ресурсов рабочих узлов. Задачам коннектора-источника необходимо прочитывать данные из системы-источника и передавать эти данные процессам-исполнителям. Задачи коннектора-приемника получают данные от процессов-исполнителей и записывают их в целевую информационную систему (хранилище).
Особенности работы Kafka Connect: несколько практических примеров
Kafka Connect не требует дополнительной установки. Она находится в том же пакете, что что и Apache Kafka. Запуск Kafka Connect происходит командной строке через файл connect-distributed.bat
[1]:
bin/connect-distributed.bat config/connect-distributed.properties
Рассмотрим пример подключения Kafka Connect к хранилищу Amazon AWS S3 для загрузки данных из корзины (bucket) в топики (topic) Apache Kafka. Для этого необходимо прежде всего прописать учетные данные (открытый и закрытый ключи) в следующем формате [1]:
aws_access_key_id = AKIAIOSFODNN7EXAMPLE aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Далее через Strimzi (менеджер пакетов для платформы развертывания Kubernetes) необходимо настроить Docker-файл для коннектора S3 [1]:
FROM strimzi/kafka:0.16.1-kafka-2.4.0 USER root:root COPY ./my-plugins/ /opt/kafka/plugins/ USER 1001
Имея настроенный Docker-образ можно развернуть Kafka Connect путем создания следующего ресурса в Kubernetes (платформа для развертывания веб-приложений) [1]:
apiVersion: kafka.strimzi.io/v1alpha1 kind: KafkaConnect metadata: name: my-connect-cluster spec: image: docker.io/scholzj/kafka:camel-kafka-2.4.0 replicas: 3 bootstrapServers: my-cluster-kafka-bootstrap:9092 externalConfiguration: volumes: - name: aws-credentials secret: secretName: aws-credentials config: config.providers: file config.providers.file.class: org.apache.kafka.common.config.provider.FileConfigProvider key.converter: org.apache.kafka.connect.json.JsonConverter value.converter: org.apache.kafka.connect.json.JsonConverter key.converter.schemas.enable: false value.converter.schemas.enable: false
После развертывания экземпляра Kafka Connect необходимо создать коннектор S3 c помощью Strimzi [1]:
apiVersion: kafka.strimzi.io/v1alpha1 kind: KafkaConnector metadata: name: s3-connector labels: strimzi.io/cluster: my-connect-cluster spec: class: org.apache.camel.kafkaconnector.CamelSourceConnector tasksMax: 1 config: key.converter: org.apache.kafka.connect.storage.StringConverter value.converter: org.apache.camel.kafkaconnector.converters.S3ObjectConverter camel.source.kafka.topic: s3-topic camel.source.url: aws-s3://camel-connector-test?autocloseBody=false camel.source.maxPollDuration: 10000 camel.component.aws-s3.configuration.access-key: ${file:/opt/kafka/external-configuration/aws-credentials/aws-credentials.properties:aws_access_key_id} camel.component.aws-s3.configuration.secret-key: ${file:/opt/kafka/external-configuration/aws-credentials/aws-credentials.properties:aws_secret_access_key} camel.component.aws-s3.configuration.region: US_EAST_1
Таким образом, благодаря утилите Kafka Connect у брокера Apache Kafka есть возможность загрузки данных из любого хранилища больших данных, включая также облачные хранилища (Amazon AWS, Drophbox, ICloud). Благодаря этому Apache Kafka является универсальным средством для хранения и обмена большими потоками данных, что позволяет активно использовать этот фреймворк в задачах Data Science и разработке распределенных приложений.
Apache Kafka для инженеров данных
Код курса
DEVKI
Ближайшая дата курса
2 июня, 2025
Продолжительность
24 ак.часов
Стоимость обучения
72 000 руб.
Освоить Apache Kafka на профессиональном уровне в качестве администратора Big Data кластеров, разработчика распределенных приложений и прочих прикладных областях Data Science вы сможете на практических курсах по Kafka в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:
- Администрирование кластера Kafka
- Apache Kafka для разработчиков
- Администрирование кластера Arenadata Streaming Kafka
Источники
- Н.Нархид, Г.Шапира, Т.Палино. Apache Kafka. Потоковая обработка и анализ данных