是否可以将 Solr 或 ElasticSearch 配置为以同样支持 MapReduce 的方式使用 HDFS 作为它们的持久层?

Can Solr or ElasticSearch be configured to use HDFS as their persistence layer in a way that also supports MapReduce?

我有一个大型索引,我需要对其执行近乎实时的更新和全文搜索,但我也希望能够 运行 对这些数据进行 map-reduce 作业。是否可以在不必维护数据的两个单独副本的情况下执行此操作? (例如,Solr 中的一个副本,HDFS 中的另一个副本)。

看起来像 Solr can be configured to use HDFS for storage,但它看起来不太适合 map-reduce,因为它只是以一种难以从 Hadoop map 读取的方式将索引存储在 HDFS 中-减少。

对于 ElasticSearch,有 es-hadoop,但这是为了从 Hadoop 内部读取和写入 ElasticSearch,但似乎并没有解决近实时将数据导入 HDFS 的问题或者避免拥有两个数据副本。

有没有人遇到过类似的问题或者可能找到了其他可能有助于解决问题的工具?还是为 map-reduce 作业拥有单独的数据副本是标准做法?

谢谢!

如果您正在谈论将来可以选择存储在 hdfs(运行 map reduce) 中,然后使用 solr 执行索引,那么我认为,您可以按照以下步骤操作

对于实时流(例如推特),您需要将它们实时存储在数据库中。一种选择是将它们发送到 kakfka 并利用 storm。从那里你可以存储在 hdfs 和 parellel 的 solr 中。他们有螺栓的概念,它们将执行相同的操作。一旦是hdfs,就可以使用map reduce。一旦进入 Solr,您就可以执行搜索。如果您希望两个数据同步,您可以尝试一些事件处理来监听数据插入 HDFS(或其堆栈)并在 Solr 中执行索引。请阅读 kafka、storm 文档以获得基本概念。备选方案可以是 Flume 或 Spark。不确定那些。