MS SQL CDC 与 Kafka Connect 和 Apache Kafka

MS SQL CDC with Kafka Connect and Apache Kafka

在我当前的用例中,我使用 Spark 核心从 MS SQL 服务器读取数据并对数据进行一些处理并每 1 分钟将其发送到 Kafka,我使用 Spark 和 Phoenix 来在 HBase table.

中维护 CDC 信息

但是这个设计有一些问题,例如如果 MS SQL 条记录激增,Spark 处理需要比批处理间隔更多的时间,并且 Spark 最终会向 Kafka 发送重复记录。

作为替代方案,我正在考虑使用 Kafka Connect 从 MS SQL 读取消息并将记录发送到 Kafka 主题并在 Kafka 中维护 MS SQL CDC。 Spark Streaming 将从 Kafka 主题中读取记录并将记录处理并存储到 HBase 中并发送到其他 Kafka 主题。

为了实现这个架构我有几个问题:

  1. 我能否使用开源 Kafka 连接器和 Apache Kafka 0.9 版本实现此架构。

  2. 如果可以,请给我推荐一个 GitHub 项目,它可以为我提供这样的连接器,我可以使用 SQL 查询如 SELECT * FROM SOMETHING WHERE COLUMN > ${lastExtractUnixTime}) 并将记录存储到 Kafka 主题中。

  3. Kafka 连接是否支持 Kerberos Kafka 设置。

Can I achieve this architecture with open source Kafka connectors and Apache Kafka 0.9 versions.

  1. 是的,Kafka Connect 是在 version 0.9 of Apache Kafka. Features such as Single Message Transforms 中发布的,但直到更高版本才添加。如果可能,您应该使用最新版本的 Apache Kafka (0.11)

If yes can you please recommend me a GitHub project, which can offer me such connectors where I can CDC MS SQL tables using SQL query such as SELECT * FROM SOMETHING WHERE COLUMN > ${lastExtractUnixTime}) and store records into Kafka topic.

  1. 您可以使用 JDBC Source which is available as part of Confluent Platform (or separately), and may also want to investigate kafka-connect-cdc-mssql

Does Kafka connect supports Kerberos Kafka setup.

  1. 是 -- 见 here and here

关于这一点:

Spark Streaming will read records from Kafka topic and process the records and stores into HBase and send to other Kafka topics.

您实际上也可以在这里使用 Kafka Connect——有可用于 HBase 的接收器——请参阅 full list of connectors here。 为了在 Kafka 中进一步操作数据,有 Kafka Streams API, and KSQL.