Hadoop MapReduce基于“分而治之”的思想,将计算任务抽象成map和reduce两个计算过程,可以简单理解为“分散运算—归并结果”的过程。
- 一个MapReduce程序首先会把输入数据分割成不相关的若干键/值对(key1/value1)集合,这些键/值对会由多个map任务来并行地处理。
- MapReduce会对map的输出(一些中间键/值对key2/value2集合)按照key2进行排序,排序是用memcmp的方式对key在内存中字节数组比较后进行升序排序,并将属于同一个key2的所有value2组合在一起作为reduce任务的输入,由reduce任务计算出最终结果并输出key3/value3。
- 作为一个优化,同一个计算节点上的key2/value2会通过combine在本地归并。
![17368230-1f83b6b501be1a8f.png](https://i-blog.csdnimg.cn/blog_migrate/4fed0ba2c228a4bbe3e0441606bb9925.png)