如何将非Confluent连接器与Apache Kafka Connect集成

时间:2018-05-15 08:59:44

标签: solr apache-kafka apache-storm apache-kafka-connect

我们需要从Kafka Stream获取数据流,我们的目标是将此数据推送到SOLR。

我们做了一些阅读,但我们发现市场上有很多Kafka Connect解决方案,但问题是我们不知道哪个是最佳解决方案以及如何实现。

选项包括:

  1. 使用Solr连接器连接Kafka。
  2. 使用Apache Storm,因为它直接提供与Solr集成的支持。
  3. 没有为上述选项提供太多文档或深度信息。

    是否有人能够让我知道

    我们如何使用Solr连接器并在不使用Confluent的情况下与Kafka流集成? Solr-Kafka Connector https://github.com/MSurendra/kafka-connect-solr

    另外,关于Apache Storm, Apache Storm是否可以接受Kafka Stream并将其推送到Solr,尽管在将数据推送到Solr之前我们需要对数据进行一些清理?

1 个答案:

答案 0 :(得分:2)

我在这里避开Storm,因为问题主要是关于Kafka Connect

  

CAVEAT - 该问题中的Solr Connector使用的是Kakfa 0.9.0.1依赖项,因此,它不太可能与最新的Kafka API一起使用。

     

此连接器未经我测试。请自担风险

以下是Confluent's documentation on using community connectors的摘录,并有一些重点和改编。换句话说,为Kafka Connects编写,不包括在Confluent Platform中。

1)克隆连接器的GitHub存储库

$ git clone https://github.com/MSurendra/kafka-connect-solr

2)使用maven构建jar

更改为新克隆的仓库,并签出您想要的版本。 (This Solr connector has no releases like the Confluent ones)。 您通常希望签出已发布的版本。

$ cd kafka-connect-solr; mvn package

点击此处,查看Installing Plugins

3)找到连接器的uber JAR或插件目录

我们将target目录中生成的Maven输出复制到Kafka Connect工作者插件路径(plugin.path属性)上的一个目录中。
例如,如果插件路径包含/usr/local/share/kafka/plugins目录,我们可以使用以下技术之一将连接器作为插件使用。

As mentioned in the Confluent docsexport CLASSPATH=<some path>/kafka-connect-solr-1.0.jar选项可行,但plugin.path将是前进的方式(Kafka 1.0 +)

您应该根据mvn package

的结果知道要使用哪个选项

选项1)单个超级JAR文件

使用此Solr Connector,我们得到一个名为kafka-connect-solr-1.0.jar的文件。

我们将该文件复制到/usr/local/share/kafka/plugins目录:

$ cp target/kafka-connect-solr-1.0.jar /usr/local/share/kafka/plugins/

选项2)依赖项目录

(这不适用于Solr连接器)

如果连接器的JAR被收集到构建目标目录的子目录中,我们可以将所有这些JAR复制到/usr/local/share/kafka/plugins中的插件目录中,例如

$ mkdir -p /usr/local/share/kafka/plugins/kafka-connect-solr
$ cp target/kafka-connect-solr-1.0.0/share/java/kafka-connect-solr/* /usr/local/share/kafka/plugins/kafka-connect-solr/
  

注意

     

请务必在运行Kafka Connect分布式工作进程的计算机的所有上安装插件。重要的是,您使用的每个连接器都适用于所有工作人员,因为Kafka Connect会将连接器任务分发给任何工作人员

4)运行Kafka Connect

如果您已正确设置plugin.pathexport CLASSPATH,那么您可以将connect-standaloneconnect-distributed与该Connect项目的相应配置文件一起使用。

关于,

  

在将数据推送到Solr

之前,我们需要对数据进行一些清理

您需要使用单独的流程(如Kafka Streams,Storm或Kafka Connect之前的其他流程)来执行此操作。将转换后的输出写入辅助主题。或者编写自己的Kafka Connect转换过程。开箱即用Kafka Connect has very limited transformations

另外值得一提 - JSON seems to be the only supported Kafka message format for this Solr connector