有一个要求,即我们从Kafka Stream获取数据流,我们的目标是将这些数据推送到SOLR。
我们做了一些阅读,但我们可以找到市场上有很多Kafka Connect解决方案,但问题是我们不知道哪个是最好的解决方案以及如何实现。
选项包括:
- 使用 Solr 连接器与 Kafka 连接。
- 使用Apache Storm,因为它直接支持与Solr集成。
没有为上述选项提供太多文档或深入信息。
有人会好心让我知道吗
我们如何在不使用Confluent的情况下使用Solr连接器并与Kafka流集成?
Solr-Kafka 连接器:https://github.com/MSurendra/kafka-connect-solr
另外,关于阿帕奇风暴, Apache Storm是否有可能接受Kafka Stream并将其推送到Solr,尽管在将其推送到Solr之前,我们需要对数据进行一些清理?
我在这里避免了 Storm,因为问题主要是关于 Kafka Connect
警告- 问题中的这个Solr连接器使用的是Kakfa 0.9.0.1依赖项,因此,它不太可能与最新的Kafka API一起使用。
这个连接器未经我测试。跟随风险自负
以下是 Confluent 关于使用社区连接器的文档的摘录,并进行了一些重点和调整。换句话说,为 Kafka Connect 编写的 Confluent Platform 中不包含。
1( 克隆连接器的 GitHub 存储库
$ git clone https://github.com/MSurendra/kafka-connect-solr
2(用maven建造罐
子切换到新克隆的存储库,并签出所需的版本。(这个Solr连接器没有像Confluent那样的版本(。 您通常需要签出已发布的版本。
$ cd kafka-connect-solr; mvn package
从这里,请参阅安装插件
3( 找到连接器的 uber JAR 或插件目录
我们将target
目录中生成的 Maven 输出复制到 Kafka Connect worker 的插件路径(plugin.path
属性(上的一个目录中.
例如,如果插件路径包含/usr/local/share/kafka/plugins
目录,我们可以使用以下技术之一使连接器可用作插件。
正如 Confluent 文档中提到的,export CLASSPATH=<some path>/kafka-connect-solr-1.0.jar
选项将起作用,尽管plugin.path
将是前进的方向(Kafka 1.0+(。
您应该根据mvn package
的结果知道要使用哪个选项
选项 1(单个超级 JAR 文件
使用此Solr连接器,我们得到了一个名为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.path
或执行export CLASSPATH
,则可以将connect-standalone
或connect-distributed
与该 Connect 项目的相应配置文件一起使用。
关于,
在将数据推送到 Solr 之前,我们需要对数据进行一些清理
在Kafka Connect 之前,您需要使用单独的进程(如 Kafka Streams、Storm 或其他进程(来执行此操作。将转换后的输出写入次要主题。或者编写自己的 Kafka Connect 转换过程。Kafka Connect 具有非常有限的开箱即用转换。
还值得一提的是 - JSON似乎是此Solr连接器唯一支持的Kafka消息格式