Hadoop Data Flow

2019-02-15  本文已影响0人  NEO_X

MapReduce 是一种编程模型, 它通过将工作划分为独立的任务, 并在一组计算机上并行执行任务, 从而使大量数据得以处理和生成。MapReduce 编程风格是由函数式编程构造映射和减少所激发的, 通常用于处理数据列表。在高级别, 每个MapReduce程序将输入数据元素列表转换为输出数据元素列表两次, 一次在映射阶段, 一次在还原阶段。

本章首先介绍MapReduce编程模型,并描述数据如何流经模型的不同阶段。示例将展示如何使用python编写MapReduce作业可。

数据流

MapReduce 框架由三个主要阶段组成:map,shuffle和sort,reduce。本节介绍每个阶段。

map映射阶段

MapReduce 应用程序的第一个阶段是映射阶段。在映射阶段中, 函数(称为映射器)处理一系列键值对。映射程序依次处理每个键值对,生成0个或多个键值对。

2-1MapReduce.png

例如, 考虑一个映射器, 其目的是将句子转换为单词。这个映射器的输入是包含句子的字符串, 映射器的功能是将句子拆分为单词并输出单词。

2-2wordcount.png

Shuffle-sort清洗排序阶段

MapReduce的第二阶段是是shuffle和sort。当map程序开始完成时,从映射阶段的中间输出移动到reduce。将map输出内容移到reduce的过程称为shuffle。

shuffle由一个分区函数来处理, 称为分区程序。分区程序用于控制键值对从map程序到reduce的流动。分区程序给出了map的输出键和的数量, 并返回预期reduce的索引。分区程序确保同一键的所有值都发送到同一减速器。默认的分区程序是基于哈希的,它计算映map输出密钥的哈希值, 并基于此结果分配分区。

reduce处理数据的最后阶段是排序过程。每个分区的中间键和值按Hadoop框架排序, 然后提交给reduce。

reduce聚合阶段

MapReduce 的第三阶段是reducer,在这个阶段,一个值的迭代器提供给reducer函数。值的迭代器是Mapper阶段输出中每个唯一键的唯一值集。reducer聚合每个唯一键的值, 并产生零个或多个输出键-值对。

例如,考虑一个reducer, 其目的是对键的所有值进行求和。这个reducer的输入是一个键的所有值的迭代器,计算所有值的和。然后,reducer输出一个键值对,其中包含输入键和输入键值的总和。

2-5reduce.png

更多信息请访问 https://blue-shadow.top/

上一篇下一篇

猜你喜欢

热点阅读