我试图通过预处理所有结果来优化搜索引擎的性能。我们有大约5万个搜索词。我计划先搜索这5万个词,然后保存在内存中(memcached/redis)。在我的例子中,搜索所有5万个术语需要一天以上的时间,因为我们进行了深层语义搜索。所以我计划将搜索(预处理)分布在几个节点上。我在考虑使用hadoop。我的输入量很小。即使搜索词总数超过50k,也可能少于1mb。但是搜索每一项都要花费一分钟的时间,即更多的是面向计算,而不是面向数据。所以我想知道我是应该使用hadoop还是构建自己的分布式系统。我记得读过一篇文章,hadoop主要是在输入非常大的情况下使用的。请告诉我怎么做。
我读到hadoop以块大小读取数据。i、 每个jvm/Map器64mb。有没有可能使它的行数而不是块大小。示例:每个Map器获得1000行而不是64mb。有没有可能做到这一点。
1条答案
按热度按时间igetnqfo1#
hadoop绝对可以处理这个任务。是的,hadoop的大部分设计都是为了处理具有非常大的输入或输出数据的作业,但这并不是它的唯一目的。它可以很好地适用于任何类型的分布式批处理。您需要了解一下nlineinputformat;它允许你根据你想要的,行数,把你的输入分割开来。