在我目前的用例中,我使用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主题。
为了实现这个架构,我有几个问题:
我是否可以使用开源Kafka连接器和Apache Kafka 0.9版本实现此架构。
如果是的话,请你推荐一个GitHub项目,它可以为我提供这样的连接器,我可以使用SELECT * FROM SOMETHING WHERE COLUMN > ${lastExtractUnixTime})
之类的SQL查询来CDC MS SQL表,并将记录存储到Kafka主题中。
Kafka connect是否支持Kerberos Kafka设置。
答案 0 :(得分:9)
我可以使用开源Kafka连接器和Apache Kafka 0.9版本来实现这种架构。
如果是,你可以向我推荐一个GitHub项目,它可以为我提供这样的连接器,我可以使用SQL查询CDC MS SQL表,例如SELECT * FROM SOMETHING WHERE COLUMN> $ {lastExtractUnixTime})并将记录存储到Kafka主题中。
Kafka connect是否支持Kerberos Kafka设置。
关于这一点:
Spark Streaming将从Kafka主题中读取记录,并将记录和存储处理到HBase并发送到其他Kafka主题。
您也可以在这里使用Kafka Connect - HBase可以使用Sinks - 请参阅full list of connectors here。 为了进一步处理Kafka中的数据,有Kafka Streams API和KSQL。