MapReduce 工作原理
本节主要详细介绍 MapReduce 的工作原理。
核心组件
上面这个流程图已经把 MapReduce 的工作过程说的很清楚了,下面我们来一个一个拆解一下。
输入文件
首先,MapReduce 任务的目的是处理数据,那数据从哪里来?一般一个 MapReduce 任务的输入数据是来自于 HDFS 文件,这里的数据文件就叫做 MapReduce 任务的输入文件,而 HDFS 上文件的格式多种多样,比如有文本文件,二进制文件等。
InputFormat
InputFormat 是 MapReduce 框架的一个类,它对输入文件进行分割和读取,并创建数据分片 InputSplit。
InputSplit
InputSplit 对象即数据分片对象,由 InputFormat 生成的,一个数据分片由一个 Mapper 来处理,数据分片是逻辑上的划分,并非物理分割。每一个分片都会相应创建一个 map 任务,因此,map 任务的数量等于分片的数量,即有多少个分片就有多少个 map 任务。分片会被划分成记录,并且每个记录都会被对应 mapper 处理。