【发布时间】:2010-05-23 11:30:26
【问题描述】:
我需要一些很好的参考资料来将 Hadoop 用于实时系统,例如响应时间很短的搜索。我知道 hadoop 有 hdfs 的开销,但是使用 hadoop 执行此操作的最佳方法是什么。
【问题讨论】:
我需要一些很好的参考资料来将 Hadoop 用于实时系统,例如响应时间很短的搜索。我知道 hadoop 有 hdfs 的开销,但是使用 hadoop 执行此操作的最佳方法是什么。
【问题讨论】:
您需要提供更多有关系统目标和挑战的信息,才能获得好的建议。也许 Hadoop 不是您所需要的,而您只需要一些分布式系统 foo? (哦,你完全确定你需要一个分布式系统吗?在几台大内存机器上使用复制数据库可以做很多事情。
对你的问题一无所知,我会给你一些在黑暗中尝试回答的尝试。
如果您真的需要在查询时进行认真的处理,那么方法是运行专门的进程来执行您需要的特定类型的计算,并使用 Thrift 之类的东西来发送计算请求并接收返回的结果.优化它们以将所有需要的数据存储在内存中。然后,接收查询的进程本身只能将问题分解成碎片,将碎片发送到计算节点,然后收集结果。这听起来像 Hadoop,但并不是因为它是为计算预加载数据的特定问题而设计的,而不是用于任意计算的通用计算模型。
【讨论】:
Hadoop 完全不适合这种需求。它针对运行几分钟到几小时甚至几天的大批量作业进行了明确优化。
FWIW,HDFS 与开销无关。事实上,Hadoop 作业将一个 jar 文件部署到每个节点上,设置一个工作区域,启动每个作业运行,通过文件在计算阶段之间传递信息,与作业运行器通信进度和状态等。
【讨论】:
这个查询很旧,但它需要一个答案。即使有数以百万计的文档,但不像常见问题解答文档那样实时更改,用于分发的 Lucene + SOLR 应该足以满足需求。 Hathi Trust 使用相同的组合为数十亿份文档编制索引。
如果索引是实时变化的,那就完全不同了。甚至 Lucene 在更新其索引时也会遇到问题,您必须查看实时搜索引擎。已经有一些尝试实时改造 Lucene,也许它应该可以工作。您还可以查看 HSearch,这是一个基于 Hadoop 和 HBase 构建的实时分布式搜索引擎,托管在 http://bizosyshsearch.sourceforge.net
【讨论】: