Apache Kafka - Creación de canalización de datos Kafka Connect


inserte la descripción de la imagen aquí


descripción general

Kafka Connect es una herramienta que nos ayuda a transferir datos de un lugar a otro. Por ejemplo, si tiene un sitio web y desea transferir datos de usuario a otro lugar para su análisis, puede usar Kafka Connect para completar esta tarea.

Usar Kafka Connect es muy simple. Tiene dos conceptos principales :source 和 sink. El origen es el componente que lee datos del origen de datos y el receptor es el componente que escribe datos en el sistema de destino. Con Kafka Connect, solo necesita configurar la información relevante de la fuente y el sumidero, y luego los datos se pueden transmitir automáticamente de un lugar a otro.


concepto principal

Al usar Kafka Connect para coordinar el flujo de datos, los siguientes son algunos conceptos importantes:

Conector

  • Connector es una abstracción de alto nivel para coordinar el flujo de datos. Describe cómo leer datos de una fuente de datos y transferirlos a un tema específico en un clúster de Kafka o cómo leer datos de un tema específico en un clúster de Kafka y escribirlos en un almacén de datos u otro sistema de destino.

Los conectores en Kafka Connect definen dónde se deben replicar los datos hacia y desde. Una instancia de conector es un trabajo lógico que administra la replicación de datos entre Kafka y otro sistema. Todas las clases implementadas o utilizadas por un conector se definen en el complemento del conector. Tanto las instancias de conector como los complementos de conector pueden denominarse "conectores".

inserte la descripción de la imagen aquí
Kafka Connect facilita la transmisión de datos de múltiples fuentes a Kafka y de Kafka a múltiples destinos. Kafka Connect tiene cientos de conectores diferentes. Entre los más populares están:

Más detalles sobre estos conectores son los siguientes:

Conector RDBMS: se utiliza para leer datos de bases de datos relacionales (como Oracle, SQL Server, DB2, Postgres y MySQL) y escribirlos en un tema específico en un clúster de Kafka, o leer datos de un tema específico en un clúster de Kafka y escribir. en una base de datos relacional.

Conector de almacenamiento de objetos en la nube: se usa para leer datos del almacenamiento de objetos en la nube (como Amazon S3, Azure Blob Storage y Google Cloud Storage) y escribirlos en un tema específico en un clúster de Kafka, o desde un tema específico en un clúster de Kafka Leer datos y escribirlos en el almacenamiento de objetos en la nube.

Conector de colas de mensajes: se usa para leer datos de colas de mensajes (como ActiveMQ, IBM MQ y RabbitMQ) y escribirlos en un tema específico en el clúster de Kafka, o leer datos de un tema específico en el clúster de Kafka, y está escrito a la cola de mensajes.

Conector de almacenamiento de documentos y NoSQL: se utiliza para leer datos de bases de datos NoSQL (como Elasticsearch, MongoDB y Cassandra) y escribirlos en un tema específico en un clúster de Kafka, o leer datos de un tema específico en un clúster de Kafka y escribirlos. en una base de datos NoSQL.

Conector de almacenes de datos en la nube: se utiliza para leer datos de almacenes de datos en la nube (como Snowflake, Google BigQuery y Amazon Redshift) y escribirlos en un tema específico en un clúster de Kafka, o leer datos de un tema específico en un clúster de Kafka, y escríbalo en el almacén de datos de la nube.

inserte la descripción de la imagen aquí

Además de los conectores populares anteriores, Kafka Connect es compatible con muchas otras fuentes y destinos de datos, que incluyen:

  • Sistema de archivos Hadoop (HDFS)
  • amazonas kinesis
  • Gorjeo
  • FTP/SFTP
  • Fuerza de ventas
  • JMS
  • Apache HBase
  • apache casandra
  • InflujoDB
  • Druida apache

Estos conectores pueden convertir a Kafka Connect en una canalización de datos flexible y extensible que puede enviar fácilmente datos a Kafka desde varias fuentes y enviarlos a varios destinos.


Tareas

Las tareas son los componentes principales del modelo de datos de Kafka Connect que coordinan el proceso real de replicación de datos. Cada instancia de conector coordina un conjunto de tareas responsables de copiar datos de un origen a un destino.

Kafka Connect proporciona soporte integrado para paralelismo y escalabilidad al permitir que el conector divida un solo trabajo en múltiples tareas. Estas tareas no tienen estado y no almacenan ninguna información de estado localmente. En cambio, el estado de la tarea se almacena en dos temas especiales config.storage.topic y status.storage.topic en Kafka y se administra mediante conectores asociados.

Al almacenar el estado de la tarea en Kafka, Kafka Connect permite canalizaciones de datos elásticas y escalables. Esto significa que las tareas se pueden iniciar, detener o reiniciar en cualquier momento sin perder información de estado. Además, dado que el estado de la tarea se almacena en Kafka, la información de estado se puede compartir fácilmente entre diferentes instancias de Kafka Connect, lo que permite una alta disponibilidad y tolerancia a fallas.

inserte la descripción de la imagen aquí


trabaja

  • Los trabajadores ejecutan procesos que ejecutan conectores y tareas. Leen configuraciones de tareas de temas específicos en el clúster de Kafka y las asignan a tareas para instancias de conector.

inserte la descripción de la imagen aquí


Convertidores

Los convertidores son un mecanismo en Kafka Connect para convertir datos entre sistemas que envían o reciben datos. Convierten datos de un formato a otro para transferirlos entre diferentes sistemas.

En Kafka Connect, los datos generalmente se transmiten en forma de matrices de bytes. Los convertidores son responsables de serializar objetos Java en matrices de bytes y deserializar matrices de bytes en objetos Java. De esta forma, los datos se pueden transferir entre diferentes sistemas sin preocuparse por la compatibilidad del formato de datos.

Kafka Connect proporciona una variedad de convertidores integrados, como JSON Converter, Avro Converter y Protobuf Converter. Estos convertidores admiten una variedad de formatos de datos y se pueden configurar y usar fácilmente.

Además, Kafka Connect también admite convertidores personalizados y los usuarios pueden escribir sus propios convertidores para satisfacer necesidades específicas. Los convertidores personalizados generalmente necesitan implementar la interfaz org.apache.kafka.connect.storage.Converter y proporcionar implementaciones de métodos de serialización y deserialización.

En resumen, Converters es un mecanismo muy útil en Kafka Connect, que puede ayudar a transferir datos entre diferentes sistemas y realizar la conversión de formato de datos.

inserte la descripción de la imagen aquí


Transforma

Las transformaciones son un mecanismo en Kafka Connect para transformar mensajes mediante la aplicación de una lógica simple en cada mensaje producido o enviado a un conector. Las transformaciones se usan comúnmente en escenarios como la limpieza de datos, la transformación de datos y la mejora de datos.

A través de Transforms, se puede aplicar una serie de operaciones de transformación a cada mensaje, como eliminar campos, renombrar campos, agregar marcas de tiempo o cambiar tipos de datos. Las transformaciones generalmente consisten en un conjunto de transformadores, cada uno responsable de realizar una operación de transformación específica.

Kafka Connect proporciona una variedad de convertidores integrados, como ExtractField, TimestampConverter y ValueToKey. Además, se pueden escribir convertidores personalizados para satisfacer necesidades específicas.

En resumen, Transforms es un mecanismo muy útil en Kafka Connect, que puede ayudar a cambiar la estructura y el contenido de los mensajes, para realizar funciones como la limpieza, transformación y mejora de datos.


Cola de mensajes fallidos

Dead Letter Queue es un mecanismo para que Kafka Connect maneje los errores del conector. Cuando un conector no puede procesar un mensaje, puede enviar el mensaje a la cola de mensajes fallidos para su posterior inspección y procesamiento.

La cola de mensajes fallidos suele ser un tema especial para almacenar mensajes que el conector no puede procesar. Es posible que estos mensajes no se deserialicen, transformen o escriban en el sistema de destino, o que contengan datos no válidos. En cualquier caso, enviar estos mensajes a Dead Letter Queue puede ayudar a garantizar un flujo de datos confiable y consistente.

Con Dead Letter Queue, los errores del conector pueden monitorearse fácilmente y manejarse adecuadamente. Por ejemplo, puede verificar manualmente los mensajes en la cola de mensajes fallidos e intentar resolver el problema, o puede escribir una secuencia de comandos o una aplicación para verificar y procesar estos mensajes automáticamente.

En resumen, Dead Letter Queue es un mecanismo importante para que Kafka Connect maneje los errores del conector Puede ayudar a garantizar la confiabilidad y la coherencia de los flujos de datos y simplificar el proceso de manejo de errores.


Principales escenarios de uso

Kafka normalmente tiene dos escenarios de uso principales en las canalizaciones de datos:

  1. Kafka actúa como punto final de una canalización de datos, origen o destino . Por ejemplo, exporte datos de Kafka a S3 o importe datos de MongoDB a Kafka.

inserte la descripción de la imagen aquí

  1. Kafka actúa como middleware entre dos puntos finales en una canalización de datos . Por ejemplo, importe datos de xx stream a Kafka y expórtelos de Kafka a Elasticsearch.

inserte la descripción de la imagen aquí


valor principal

El principal valor que Kafka aporta a las canalizaciones de datos es:

  1. Puede actuar como un gran búfer, desvinculando efectivamente a los productores y consumidores de datos.

  2. Es muy confiable en términos de seguridad y eficiencia, y es la mejor opción para construir canalizaciones de datos.


API de Kafka Connect frente a Producer 和 API de consumidor

La API de Kafka Connect está diseñada para resolver problemas comunes en la integración de datos.

Algunas ventajas de Kafka Connect API sobre el uso directo de Producer y Consumer API son:

  • Simplifica el desarrollo. No es necesario escribir manualmente la lógica del productor y del consumidor.
  • Es tolerante a fallas. Connect reinicia automáticamente las tareas fallidas y continúa sincronizando datos sin pérdida.
  • Las fuentes y los destinos de datos comunes ya están integrados. Por ejemplo, mysql, postgres, elasticsearch y otros conectores han sido desarrollados y pueden usarse fácilmente.
  • Interfaz de administración y configuración consistente. Las tareas del conector se pueden configurar, iniciar y detener fácilmente a través de la API REST.

Además de la API de Kafka Connect, Kafka también se puede integrar con otros sistemas para lograr la integración de datos. Por ejemplo:

  • Integre con Spark Streaming para análisis de datos en tiempo real y aprendizaje automático.
  • Combinado con Flink, realiza el procesamiento de flujo con la semántica Exactly-Once.
  • Combínelo con Storm para crear herramientas informáticas en tiempo real.
  • Combinado con Hadoop para computación en tiempo real y por lotes.

Cuestiones clave a tener en cuenta al crear una canalización de datos

  1. Puntualidad: Admite diferentes requisitos de puntualidad y se puede migrar. Kafka actúa como un búfer, desvincula a los productores y los consumidores, y admite el procesamiento por lotes y en tiempo real.
  2. Confiabilidad: Evite el punto único de falla y sea capaz de recuperarse rápidamente. Kafka admite la entrega al menos una vez y la entrega solo una vez es posible en combinación con sistemas externos.
  3. Alto rendimiento y rendimiento dinámico: admite alta simultaneidad y tráfico de ráfagas. Kafka tiene un alto rendimiento, los productores y los consumidores están desacoplados y se pueden ajustar dinámicamente.
  4. Formato de datos: se admiten varios formatos y los conectores pueden convertir formatos. Las API de Kafka y Connect son independientes del formato y utilizan convertidores conectables.
  5. Transformación: ETL vs ELT. ETL ahorra espacio y tiempo, pero restringe los sistemas posteriores. ELT conserva los datos originales y es más flexible.
  6. Seguridad: cifrado de datos, autenticación y autorización, registros de auditoría. Kafka es compatible con estas funciones de seguridad.
  7. Manejo de fallas: maneje datos anormales, vuelva a intentarlo y corrija. Debido a que Kafka conserva los datos durante mucho tiempo, los datos históricos se pueden volver a procesar.
  8. Acoplamiento y flexibilidad:
    • Evite crear canalizaciones de datos separadas para cada aplicación y aumentar los costos de mantenimiento.
    • Conserve los metadatos y permita cambios de esquema para evitar un acoplamiento estrecho entre productores y consumidores.
    • Procese la menor cantidad de datos posible, dejando más flexibilidad para los sistemas posteriores. El sobretratamiento puede restringir los sistemas aguas abajo.

En resumen, para construir una buena canalización de datos, debe considerar todos los aspectos de tiempo, seguridad, conversión de formato y manejo de fallas. Al mismo tiempo, debe estar acoplado de la manera más flexible posible para brindar la máxima flexibilidad a los sistemas posteriores que utilizar datos.

Como plataforma de procesamiento de flujo, Kafka puede resolver bien estos problemas y desempeñar un papel de amortiguador en la separación de productores y consumidores. Al mismo tiempo, Kafka Connect proporciona una interfaz común para la entrada y salida de datos, lo que simplifica el trabajo de integración.

La canalización de datos creada con Kafka puede funcionar en escenarios de procesamiento por lotes y en tiempo real, y tiene las características de alta disponibilidad, alto rendimiento y alta escalabilidad.


ETL VS ELT

Diferentes formas de integración de datos.

Dos formas diferentes de integración de datos

  • ETL: Extraer-Transformar-Cargar, es decir, extraer-transformar-cargar. En este enfoque, los datos se extraen del sistema de origen, se transforman y procesan antes de cargarlos en el sistema de destino.
  • ELT: Extraer-Cargar-Transformar, es decir, extraer-cargar-transformar. De esta forma, después de extraer los datos del sistema de origen, primero se cargan en el sistema de destino y luego se transforman y procesan en el sistema de destino.
  • La principal diferencia entre ETL y ELT es el momento y la ubicación de la transformación de datos: ETL transforma los datos antes de cargarlos, ELT transforma los datos después de cargarlos. La transformación de ETL se produce entre el sistema de origen y el sistema de destino, y la transformación de ELT se produce dentro del sistema de destino.

Tanto ETL como ELT tienen ventajas y desventajas:

Ventajas de ETL:

  • Los datos se pueden filtrar, agregar y muestrear durante la carga, lo que reduce los costos de almacenamiento e informática.
  • El formato y la calidad de los datos se pueden garantizar antes de cargar los datos en el sistema de destino.
    Desventajas de ETL:
  • La lógica de transformación está entremezclada en la canalización de datos, lo que dificulta su mantenimiento y depuración.
  • El sistema descendente solo puede acceder a los datos convertidos, que tienen poca flexibilidad.
    Ventajas de los ELT:
  • Proporcione datos sin procesar para sistemas posteriores, más flexibles. Los sistemas posteriores pueden procesar y transformar los datos por sí mismos según sea necesario.
  • La lógica de transformación está en el sistema descendente, que es más fácil de depurar y mantener.
  • Los datos de origen son más fáciles de rastrear y reprocesar.

Desventajas de los ELT:

  • Se requiere que el sistema de destino tenga potentes capacidades de procesamiento de datos.
  • Se requiere un espacio de almacenamiento más grande para almacenar datos sin procesar.
  • El proceso de conversión puede suponer una gran carga para el sistema de destino.

En términos generales, si el sistema descendente necesita procesar datos con alta flexibilidad y una gran capacidad de procesamiento de datos, ELT suele ser más adecuado. De lo contrario, ETL puede ser más eficiente al preprocesar los datos antes de cargarlos, descargando el sistema posterior. En muchos casos, también se utilizará una mezcla de ETL y ELT

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/yangshangwei/article/details/130980826
Recomendado
Clasificación