我正在尝试通过预处理所有结果来优化搜索引擎的性能。我们有大约5万个搜索字词。我打算事先搜索这些50k术语并将其保存在内存中(memcached / redis)。在我的案例中搜索所有50k术语需要一天多的时间,因为我们进行深度语义搜索。所以我打算在几个节点上分发搜索(预处理)。我正在考虑使用hadoop。我的输入大小非常少。即使总搜索期限超过50k,可能还不到1MB。但是搜索每个术语需要花费一分钟,即面向数据的计算更多。所以我想知道我是否应该使用Hadoop或构建我自己的分布式系统。我记得读过hadoop主要用于输入非常大的情况。请建议我如何解决这个问题。
我读过hadoop以块大小读取数据。即每个jvm / mapper 64mb。是否可以使其行数而不是块大小。示例:每个映射器获得1000行而不是64mb。是否有可能实现这一目标。
答案 0 :(得分:2)
Hadoop绝对可以完成这项任务。是的,Hadoop的大部分内容旨在处理具有非常大的输入或输出数据的作业,但这不是它的唯一目的。它可以很好地适用于任何类型的分布式批处理。你想看看NLineInputFormat;它允许您根据您想要的内容,行数分割您的输入。