【问题标题】:MapReduce Map Tasks Share Input DataMapReduce 地图任务共享输入数据
【发布时间】:2011-11-07 22:33:24
【问题描述】:

我最近开始研究 MapReduce/Hadoop 框架,想知道我的问题是否真的适合该框架。

考虑一下。考虑一个示例,其中我有大量输入文本文件,此外,作为输入,我想接收大量关键字(例如,包含在单个文件中)。对于每个关键字,我想在每个文本文件中搜索并报告该文件中该关键字的实例数。 text 我会为每个关键字、每个文本文件重复此操作。

这种情况与我在网上看到的示例有些不同,因为我不仅希望将要搜索的文本文档作为输入,还希望将关键字作为搜索它们的输入。这意味着每个 Map 任务可能会多次处理同一个输入文本文件(每个关键字一次)。

这样的问题是否适合 MapReduce 框架?

【问题讨论】:

    标签: hadoop mapreduce


    【解决方案1】:

    提到的场景绝对适合 MapReduce 框架。

    要搜索的关键字不必是 map 函数的输入参数。有两种选择。

    1. 可以将包含关键字的文件放入HDFS,并使用HDFS API在map函数中读取。

    2. DistributedCache 也可以考虑在映射器之间共享同一个文件。

    在HDFS中读取文件等所有初始化都可以在o.a.h.mapreduce.mapper#setup()函数中完成。

    一旦在映射器中获得关键字列表,就可以在输入文件中搜索它们并发出计数。

    可能有一些更好的文本处理算法。查看 Data-Intensive Text Processing with MapReduce 书籍,了解使用 MapReduce 进行文本处理。

    要考虑的一件事是,如果数据很小,那么使用 Hadoop 比使用 Shell 脚本的开销更大。对于大数据,使用 Hadoop 是一个优势。

    【讨论】:

    • DistributedCache 正是我在这种情况下所需要的,而且现在更有意义了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 2021-06-22
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多