因此,在reduce完成其工作后,我们将数据存储在这样的文件中:
但是当用户输入内容时会发生什么?当数据只存储在文件中时如何执行搜索?
答案 0 :(得分:2)
MapReduce用于处理。因此,一旦处理完数据并生成了HDFS上的聚合信息,您就必须在某些程序中读取该文件才能显示给用户。或者有几个备选选项可用于从HDFS读取数据: 您可以使用Hive并在此数据之上创建一个表,并使用SQL查询来读取数据。一个简单的Web应用程序可以使用thrift服务器连接到它,该服务器为配置单元提供JDBC接口。 其他选项包括将数据加载到HBase,Shark等。所有这些都取决于您的用例是聚合数据大小的内容,性能要求
答案 1 :(得分:1)
MapReduce之后构建的是一个倒排索引,一个不错的小数据结构。现在你必须使用它。
例如,在谷歌的情况下,这个反向索引在许多服务器上分片,并将整个列表存储在每个服务器上。因此,例如,服务器500具有be的列表,而另一个具有to的列表。这些是实现细节,如果您可以将索引保存在内存中,理论上可以将它存储在大型哈希中的一个框中。
当客户将单词输入引擎时。它将检索整个列表。如果有多个单词,它将执行这些列表的交集,以显示包含两个单词的文档。
以下是关于他们如何做到这一点的完整论文的来源http://infolab.stanford.edu/~backrub/google.html
请参阅“图4. Google查询评估”