0

我正在尝试通过预处理所有结果来优化搜索引擎的性能。我们有大约 50,000 个搜索词。我打算事先搜索这 50k 个术语并将其保存在内存中(memcached/redis)。在我的情况下,搜索所有 50k 个术语需要超过一天的时间,因为我们进行了深度语义搜索。所以我打算将搜索(预处理)分布在几个节点上。我正在考虑使用hadoop。我的输入大小非常小。即使总搜索词超过 50k,也可能不到 1MB。但是搜索每个术语需要花费最少的时间,即更多面向计算而不是面向数据。所以我想知道是否应该使用 Hadoop 或构建自己的分布式系统。我记得读到主要在输入非常大的情况下使用 hadoop。请建议我如何去做。

我读了hadoop以块大小读取数据。即每个jvm/mapper 64mb。是否可以使其成为行数而不是块大小。示例:每个映射器获得 1000 行而不是 64mb。有没有可能做到这一点。

4

1 回答 1

2

Hadoop 绝对可以处理这个任务。是的,Hadoop 的大部分旨在处理具有非常大的输入或输出数据的作业,但这不是它的唯一目的。它可以很好地用于接近任何类型的分布式批处理。你会想看看NLineInputFormat;它允许您根据您想要的行数来拆分您的输入。

于 2013-01-17T19:21:01.193 回答