MS SQL CDC与Kafka Connect和Apache Kafka

时间:2017-09-11 06:32:21

标签: sql-server apache-spark apache-kafka apache-kafka-connect

在我目前的用例中,我使用Spark核心从MS SQL Server读取数据并对数据进行一些处理并每隔1分钟将其发送到Kafka,我使用Spark和Phoenix来维护HBase中的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项目,它可以为我提供这样的连接器,我可以使用SELECT * FROM SOMETHING WHERE COLUMN > ${lastExtractUnixTime})之类的SQL查询来CDC MS SQL表,并将记录存储到Kafka主题中。

  3. Kafka connect是否支持Kerberos Kafka设置。

1 个答案:

答案 0 :(得分:9)

  

我可以使用开源Kafka连接器和Apache Kafka 0.9版本来实现这种架构。

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

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

    1. 您可以使用JDBC Source(或Confluent Platform)中提供的separately,也可以调查kafka-connect-cdc-mssql
    2.   

      Kafka connect是否支持Kerberos Kafka设置。

      1. 是 - 请参阅herehere
      2. 关于这一点:

          

        Spark Streaming将从Kafka主题中读取记录,并将记录和存储处理到HBase并发送到其他Kafka主题。

        您也可以在这里使用Kafka Connect - HBase可以使用Sinks - 请参阅full list of connectors here。 为了进一步处理Kafka中的数据,有Kafka Streams APIKSQL