【问题标题】:Using ElasticSearch with Hadoop Map Reduce将 ElasticSearch 与 Hadoop Map Reduce 结合使用
【发布时间】:2013-07-10 10:03:17
【问题描述】:

我有一个“大数据”文本搜索问题,我曾在 Stackexchange 网站上寻找一般建议 - https://softwareengineering.stackexchange.com/questions/203855/text-search-big-data-problem

对于这篇 SO 帖子,这里有一个特定的问题,即围绕 ElasticSearch 与 Hadoop 的集成(但我想我会提供一些背景知识)。

问题概述

基本上我有大量的文本,分成不同的“行”,每一行代表一个项目。我还有另一个较小的列表,其中包含此文本中的搜索词。我想交叉引用这两者并进行反向索引查找,并返回我找到的索引。

注意:我知道 20GB 不是海量数据,但本练习的次要目标是与大数据技术人员合作,为我们使用真正的大数据 (> TB) 项目奠定基础!

接近

我一直在研究 Lucene 搜索路线,但据我所知,这将导致以下方法:

  • 使用 MapReduce 删除停用词和格式化文本等
  • 生成 Lucene 索引(可能使用 MapReduce - 这是一种优化)
  • 开发一个 C# 应用程序以与 Lucene(或 SolR)交互并进行搜索。

但对我来说,这仍然是连续的,即我将依赖搜索服务器的可扩展性来真正快速,但我仍然必须从我的列表顶部开始并逐步完成它,一个接一个。

可以将原始列表拆分成块,然后在不同的服务器上运行我的 C# 应用程序,这将是一种方法。

具体问题

但我想知道是否可以使用 Hadoop Map Reduce 直接与 ElasticSearch 交互(我首选的 Lucene 路径)?我已经搜索(!)但找不到任何东西,除了将 Wonderdog 与 Pig 一起使用。很好 - 但我看不到 Pig UDF 和 ElasticSearch 的示例。

任何指针表示赞赏,非常欢迎代码示例!

邓肯

【问题讨论】:

  • 是一次性交易还是您将来会有更多数据,或者数据或多或少是静态的,但会出现新类别,您需要根据旧数据检测它们?

标签: text hadoop lucene elasticsearch bigdata


【解决方案1】:

有一个名为 elasticsearch-hadoop 的新官方支持

看这里:http://www.elasticsearch.org/blog/elasticsearch-and-hadoop/

还有:https://github.com/elasticsearch/elasticsearch-hadoop

【讨论】:

    【解决方案2】:

    您也许可以完成这项工作。

    一种可能的方法是让每个 hadoop 节点都运行一个嵌入式仅路由弹性搜索节点。这应该会使查询更有效率,因为节点将确定每个查询需要联系哪些节点,并利用有效的内部协议来这样做。您可以通过添加更多的 es 数据节点来进行水平扩展。

    唯一的缺点是你的hadoop节点不会靠近不同节点上的数据;所以你有一点延迟通过网络。但即便如此,您应该能够以这种方式运行大量看起来应该很便宜的查询。由于它只有 20GB,你的 es 节点应该很少需要去磁盘,并且可以在内存中做所有事情,利用过滤器缓存等。

    我实际上是在 1 节点集群中使用非 hadoop 代码针对弹性搜索进行一些消歧,并且我每秒管理 2000-2500 个简单查询,而没有真正强调弹性搜索。我花了大约 45 分钟来处理 700 万份文件。添加节点以进行扩展。当然,您的里程可能会有所不同。

    对于许多 hadoop 节点,您可以通过处理大量并发请求来抵消延迟效应,并且大型 ES 集群应该很容易跟上集体负载。只需增加副本数量即可减少每个节点的负载。

    您可能会使用批量索引 api 以及您的 reduce 步骤的一部分。另一个想法是使用 search_type=scan 来遍历弹性搜索中的所有文档,而不是使用 hdfs 中的文件。可选,但可能效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多