【发布时间】:2018-01-21 16:53:23
【问题描述】:
我是 hadoop 新手,我阅读了很多页的 hadoop mapreduce 和 hdfs,但仍然无法弄清楚一个概念。
可能是这个问题是愚蠢或不寻常的,如果它对此感到非常抱歉。 我的问题是,假设我在 hadoop 中为大小为 1 GB 的文件创建了一个字数统计程序,其中 map 函数将每一行作为输入,输出作为键值对,reduce 函数将接受输入 作为键值对并简单地迭代列表并计算一个单词出现在该文件中的总次数。
现在我的问题是,因为这个文件存储在跨多个数据节点的块中,并且 map-reduce 在每个数据节点上并行执行。假设我的文件存储在两个数据节点上,第一个数据节点上的文件包含单词“hadoop”5次,第二个数据节点上的文件包含单词“hadoop”7次。所以基本上 整个 map reduce 过程的输出将是:
hadoop:7
hadoop:5
因为 2 个 map-reduce 函数在 2 个不同的数据节点上并行执行, 但输出应该是两个文件上“hadoop”字数的总和,即: hadoop:13
那么我将如何实现这一点,或者我在这里错过了一些概念。请帮助我严重坚持这个概念,如果我无法让你理解我想问的问题,我很抱歉。
【问题讨论】:
标签: java hadoop mapreduce hdfs