map-reduce 是如何工作的……我做对了吗?

How does map-reduce work..Did i get it right?

我正在尝试了解 map-reduce 的实际工作原理。请阅读我在下面写的内容,并告诉我这里是否有任何遗漏或不正确的地方。 谢谢你。

首先将数据拆分为所谓的输入拆分(这是一种逻辑组,我们将其大小定义为记录处理的需要)。 然后,每个输入拆分都有一个映射器,它接受每个输入拆分并按键和值对其进行排序。 然后,有一个洗牌过程,它从映射器(键值)中获取所有数据,并将所有相同的键与其值合并(输出它是所有键及其值列表)。洗牌过程的发生是为了给缩减器一个 1 键的输入,用于每种类型的键及其总值。 然后,Reducer 将所有键值合并到一个地方(也许是页面?),这是 MapReduce 过程的最终结果。 我们只需要确保定义 Map(始终给出键值输出)和 Reduce(最终结果 - 获取输入键值,可以是计数、求和、平均值等)步骤代码。

你的理解有点错误,特别是映射器的工作原理。 我got a very nice pictorial image简单解释一下

它类似于wordcount程序,其中

  • 每捆巧克力都是 InputSplit,由映射器处理。所以我们有 3 个包。
  • 每块巧克力都是一个词。一个或多个单词(构成一个句子)是单个映射器的记录输入。所以,一个inputsplit内,可能有多个records,每个record输入到单个mapper
  • mapper 计算每个 word(巧克力)的出现次数并吐出计数。请注意,每个映射器仅处理一个 line(记录)。一旦完成,它就会从 inputsplit 中选择下一个 record。 (图中的第 2 相)

  • map 阶段完成后,sortingshuffling 开始计算 bucket 相同的巧克力。 (图中的第 3 相)

  • 一个reducer得到一个bucket键为name of the chocolate(或word)和一个list计数。因此,在整个输入文件中,reducer 的数量与不同单词的数量一样多。
  • reducer 遍历计数并将它们相加以产生最终计数并根据单词发出它。

下图显示了 wordcount 程序中的一个 inputsplit 是如何工作的:

类似质量检查 - Simple explanation of MapReduce?

另外,post 以非常简单的方式解释了 Hadoop - HDFS 和 Mapreduce https://content.pivotal.io/blog/demystifying-apache-hadoop-in-5-pictures