我有一个大的索引,我需要在上面执行接近实时的更新和全文搜索,但我也希望能够在这些数据上运行map reduce作业。有没有可能做到这一点,而不必维护两个单独的数据副本(e、 g.一份在solr中,另一份在hdfs中)。
看起来solr可以配置为使用hdfs进行存储,但是map reduce的效果似乎不太好,因为它只是以一种很难从hadoop map reduce读取的方式将索引存储在hdfs中。
对于elasticsearch,有es-hadoop,但这是为了从hadoop内部读写elasticsearch,但似乎并不能解决将数据近实时地放入hdfs或避免有两个数据副本的问题。
有没有人遇到过类似的问题,或者找到了其他可能有助于解决问题的工具?或者,对于map reduce作业,有单独的数据副本是标准做法吗?
谢谢!
1条答案
按热度按时间cbeh67ev1#
如果您正在讨论将来可以选择存储在hdfs(run map reduce)中,然后使用solr执行索引,那么我认为,您可以按照以下步骤操作
对于实时流媒体(例如twitter),您需要将它们实时存储在db中。一个选择是把他们送到Kafka,利用风暴。从那里你可以在hdfs和solr中并行存储。他们有螺栓的概念,螺栓的性能也一样。一旦是hdfs,就可以使用map reduce。一旦进入solr,您将执行搜索。如果希望两个数据同步,可以尝试一些事件处理,监听数据插入hdfs(或其堆栈)并在solr中执行索引。请通过Kafka,风暴文件有基本的想法。替代品可以是Flume,或Spark。不太清楚。