kafka-connect——数据导入导出——简介与核心概念

目录

1、简介:

2、核心概念:

(1)connectors:

(2)Tasks:

(3)Workers:

(4)Converters:


1、简介:

Kafka Connect是一种用于在Kafka和其他系统之间可扩展的、可靠的流式传输数据的工具。它使得能够快速定义将大量数据集合移入和移出Kafka的连接器变得简单。 Kafka Connect可以获取整个数据库或从所有应用程序服务器收集指标到Kafka主题,使数据可用于低延迟的流处理。导出作业可以将数据从Kafka topic传输到二次存储和查询系统,或者传递到批处理系统以进行离线分析。 Kafka Connect功能包括:

Kafka connector通用框架,提供统一的集成API;

同时支持分布式模式和单机模式;

REST 接口,用来查看和管理Kafka connectors;

自动的offset管理,开发人员不必担心错误处理的影响;

分布式、可扩展;

流/批处理集成;

KafkaCnnect有两个核心概念:Source和Sink。 Source负责导入数据到Kafka,Sink负责从Kafka导出数据,它们都被称为Connector。

2、核心概念:

Kafka-connect的核心概念包括:connectors、tasks、workers和converters。

(1)connectors:

Connectors-通过管理任务来细条数据流的高级抽象。在kafka connect中,connector决定了数据应该从哪里复制过来以及数据应该写入到哪里去,一个connector实例是一个需要负责在kafka和其他系统之间复制数据的逻辑作业,connector plugin是jar文件,实现了kafka定义的一些接口来完成特定的任务。

(2)Tasks:

Tasks-数据写入kafka和数据从kafka读出的实现。task是kafka connect数据模型的主角,每一个connector都会协调一系列的task去执行任务,connector可以把一项工作分割成许多的task,然后再把task分发到各个worker中去执行(分布式模式下),task不自己保存自己的状态信息,而是交给特定的kafka 主题去保存(config.storage.topic 和status.storage.topic)。在分布式模式下有一个概念叫做任务再平衡(Task Rebalancing),当一个connector第一次提交到集群时,所有的worker都会做一个task rebalancing从而保证每一个worker都运行了差不多数量的工作,而不是所有的工作压力都集中在某个worker进程中,而当某个进程挂了之后也会执行task rebalance。

(3)Workers:

Workers-运行connectors和tasks的进程。connectors和tasks都是逻辑工作单位,必须安排在进程中执行,而在kafka connect中,这些进程就是workers,分别有两种worker:standalone和distributed。这里不对standalone进行介绍,具体的可以查看官方文档。我个人觉得distributed worker很棒,因为它提供了可扩展性以及自动容错的功能,你可以使用一个group.ip来启动很多worker进程,在有效的worker进程中它们会自动的去协调执行connector和task,如果你新加了一个worker或者挂了一个worker,其他的worker会检测到然后在重新分配connector和task。

(4)Converters:

Converters- kafka connect和其他存储系统直接发送或者接受数据之间转换数据。converter会把bytes数据转换成kafka connect内部的格式,也可以把kafka connect内部存储格式的数据转变成bytes,converter对connector来说是解耦的,所以其他的connector都可以重用,例如,使用了avro converter,那么jdbc connector可以写avro格式的数据到kafka,当然,hdfs connector也可以从kafka中读出avro格式的数据。

综上所述,在开启一个connect时,connectors中只是保存了数据来源、数据目的等配置信息,然后会分发为若干个task(任务),每个task(任务)又会安排若干个workers(进程)干具体的工作,在workers工作过程中与数据来源接触时,会通过converters(转换)将数据来源中的数据格式转换为kafka中存储的格式,在workers工作过程中与数据目的接触时,会通过converters(转换)将kafka中存储的数据格式转换成数据目的需要的数据格式。这就是一个connect整体的工作分配流程情况。

发布了131 篇原创文章 · 获赞 23 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/LSY_CSDN_/article/details/103723264