MS SQL CDC与Kafka Connect和Apache Kafka

nil*_*212 1 sql-server apache-kafka apache-spark 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项目,它可以为我提供这样的连接器,我可以使用SQL查询CDC MS SQL表SELECT * FROM SOMETHING WHERE COLUMN > ${lastExtractUnixTime}),并将记录存储到Kafka主题中.

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

Rob*_*att 9

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

  1. 是的,Kafka Connect在Apache Kafka的0.9版本中发布.但是,直到更高版本才会添加单个消息转换等功能.如果可能,您应该使用最新版本的Apache Kafka(0.11)

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

  1. 您可以使用作为Confluent Platform(或单独)的一部分提供的JDBC Source,也可能想要调查kafka-connect-cdc-mssql

Kafka connect是否支持Kerberos Kafka设置.

  1. 是的 - 看到这里这里

关于这一点:

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

您实际上也可以在这里使用Kafka Connect - HBase可以使用Sinks - 请参阅此处的连接器完整列表.为了进一步处理Kafka中的数据,有Kafka Streams APIKSQL.