Kafka Connect

kafka, apache kafka, курсы администраторов spark, apache kafka для начинающих, Big Data, Data Science, kafka streaming, Kafka, брокер kafka, avro, kafka cluster

Кафка Коннект — это одна из библиотек (наряду с Kafka Streams), которые входят в брокер Kafka. Кафка Коннект отвечает за перемещение данных между Kafka и другими хранилищами Big Data (например, Hive, Impala). Кафка Коннект поставляется вместе с Apache Kafka, так что она не требует отдельной установки.

Что такое Kafka Connect: основные особенности архитектуры

Кафка Коннект — это библиотека для взаимодействия брокера Kafka c Big Data хранилищами. Кафка Коннект выполняется в виде распределенного кластера процессов-исполнителей (worker processes). В состав архитектуры Kafka Streams входят следующие элементы [1]:

  • процессы-исполнители — отвечают за запуск задач (tasks) для распределенного перемещения Big Data, а также для распределения загрузки по рабочим узлам с целью эффективного использования их ресурсов;
  • коннектор-источник — отвечают за чтение данных из системы-источника и передачу этих данных процессам-исполнителям;
  • коннекторы-приемники — получают данные от процессов-исполнителей и записывают их в целевую информационную систему или хранилище.

 Как появилась Kafka Connect: краткая история

Кафка Коннект создавалась наряду с Kafka Streams для работы в многопоточной среде в рамках проекта Apache Kafka. Kafka первоначально создавалась в Linkedin разработчиками Джеем Крепсом, Нехой Нархедой и Джуном Рао. Название 23 октября 2012 года состоялось включение Kafka в Apache Incubator (шлюз для идей, которые в будущем становятся полноценными проектами Apache Software Foundation). Первый выпуск проекта Kafka c входящими в него библиотеками Кафка Коннект и Kafka Streams состоялся 12 апреля 2014 года. Последняя версия Kafka 3.0.0 была выпущена 21 сентября 2021 года.

Пример работы с Kafka Connect

Для того, чтобы запустить Кафка Коннект, необходимо запустить файл connect-distributed.bat через командную строку [2]:

bin/connect-distributed.bat config/connect-distributed.properties

Рассмотрим пример подключения Kafka Connect к хранилищу Amazon AWS S3. Для этого необходимо развернуть Kafka Connect в Kubernetes (платформа для развертывания веб-приложений) следующим образом [2]:

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 с помощью Strimzi (отвечает за запуск кластера Kafka на Kubernetes) [2]:

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 включает множество готовых коннекторов для интеграции с наиболее популярными Big Data хранилищами (HDFS, Amazon S3, Elasticsearch, Hive, Cassandra). Однако, если необходимо, можно создать собственный коннектор для интеграции с системой, для которой не предусмотрены готовые коннекторы.

Таким образом, благодаря библиотеке Kafka Connect, брокер Kafka имеет возможность взаимодействия с любым хранилищем Big Data, включая облачные (Amazon AWS, Drophbox, ICloud). Это позволяет аналитикам и разработчикам активно использовать эту Big Data платформу потоковой обработки в задачах Data Science.

Записаться на курс

Смотреть раcписание

Источники

  1. Н.Нархид, Г.Шапира, Т.Палино. Apache Kafka. Потоковая обработка и анализ данных
  2. https://habr.com/ru/company/redhatrussia/blog/508056/

Поиск по сайту