Mapper过程详解:
1.首先根据输入进行分片,inputsplit,每个分片的大小是固定的,分片的大小跟数据库的大小是相同的,比如默认是64M,如果输入文件有两个,32M和72M,会有三个分片,不足的是一个,超过的72M会分为两个,一个是8M,另一个是64M。
2,第二阶段是根据规则,生成键值对,键是文本位置,值是文本内容。
3.调用mapper的map类,每一个键值对都会调用一次map类,每一个mapper都是一个进程。
4.然后根据键来对数据进行分区,同一个键值的数据放到同一个分区内。分区的数目就是reducer运行的数量。
5.第五阶段是对每个分区的数据进行排序。先按照键进行排序,键相同的按照相同键的数值进行排序。如果有第六阶段,进入第六阶段,如果没有,直接作为文件输出。
6.第六阶段是对键相同的进行规约,执行reduce过程,该阶段数据量会减少。然后输出成linux文件。
Reducer过程详解:
1.reducer获取多个mapper的输出,将其复制到本地。
2.将复制的数据进行合并,对合并的数据进行排序。
3.对相同键的调用一次reduce方法,这些数据会生成linux文件,然后写入hdfs