0

我是地图/减少的新手。一个地图任务的输入是否可能在不同的服务上?假设我想使用 map/reduce 模拟“字数”,并且我逐行拆分数据(每行一个)。是不是每个 map 任务都会引用一个数据,并计算该数据中每个单词的出现次数?

4

2 回答 2

1

输入文件将根据 hdfs 块大小进行拆分,并且每次拆分都会产生一个映射任务。

例如,默认情况下,hdfs 块大小为 64mb。假设您的输入文件大小为 50mb。当您将此文件加载到 hdfs 中时,它将被分成 2 份,每份 25mb。因此,将产生 2 个地图任务来处理每个输入拆分。假设一个输入拆分有 100 行,那么映射器类(任务)将调用 map 方法 100 次,每一行调用一次。

于 2013-05-08T11:16:15.973 回答
1

使用 InputSplit 类拆分数据。您可以定义自己的输入拆分类。输入拆分的数量等于映射器的数量。因此,理论上,如果您有与输入行一样多的映射器,然后以这种方式编写输入拆分,则每行都可以作为映射任务的输入。通常地图任务的输入位于同一台机器上。Map reduce 框架仅以这种方式调度 map 任务。我建议你阅读一些 map reduce 的基础知识。cloudera 网站上有很好的视频教程。

于 2013-05-08T11:35:50.557 回答