【发布时间】:2014-11-05 06:14:44
【问题描述】:
寻找 Elasticsearch 和 Apache Storm 之间的简单集成路径。 elasticsearch-hadoop 库中包含对此的支持,但这会给 Hadoop 堆栈带来大量依赖:从 Hive 到 Cascading,我根本不需要。有没有人在没有引入 elasticsearch-hadoop 的情况下成功实现了这种集成?谢谢。
【问题讨论】:
-
在这种情况下,集成是什么意思?你想达到什么目标? ES 作为 ES 中 Storm 或 Storm 存储的输入?
-
两种方式。我想从一个 spout 迭代一个滚动,将元组发送到各种流中。反过来,一些螺栓会在处理后写入 ES。我正在实现 ES 既是源又是目标的管道。在将 spout 的源 ES 连接添加到设置函数中以确保在启动拓扑之前对其进行序列化后,我取得了一些进展。
-
您不会直接使用elasticsearch Java API 还是我不理解您的问题?
-
正确。我正在使用 Java API。问题是在 Storm 中高吞吐量处理 ES 数据的最佳实践是什么。我目前在多个 Storm spout 上打开一个传输客户端,每个都从一个滚动读取并发出 JSON 元组。然后每个 Bolt 都有自己的传输客户端连接——它们对传入的元组进行批处理并定期发出批量写入。这可行,但吞吐量非常低。我正在研究使用 ES 节点客户端连接来避免两跳操作。还会在创建过程中禁用目标索引中的副本。
标签: hadoop elasticsearch apache-storm