MR的核心思想
【分而治之】:把一个复杂的算法问题分为等价的规模较小的若干部分,然后找出各部分的解,最后把各部分的解组成整个问题的解。
适合进行计算一些各Map之间关联度不大或者没有关联度的数据
MR计算流程(八步走)
图解
原理
- 读取输入文件(HDFS)内容,解析成key1、value1
- 【Map阶段】MapTask负责拆分,对输入的key1、value1调用map函数处理转换成新的key2、value2输出
- 【分区】对输出的key2、value2进行分区(默认只有一个分区)。一个分区对应一个Reduce
- 【排序】对不同分区的数据,按照key进行排序
- 【规约】进行规约(优化MR程序,提高效率)。一般都是使用默认的
- 【分组】将相同key值数据合并成一个集合,获得新的key2、value2集合
- 【Reduce阶段】ReduceTask负责合并,将key2、value2合并数据获得新的key3、value3
- 把reduce的输出保存到文件(HDFS)中