举例说明MapReduce的过程

1.MapReduce的核心思想和处理过程

MapReduce 的核心思想是分而治之,和归并排序的思想是一样的。
整体的处理过程如下图1:

mapreduce.png

map: 就是一个大任务分成多个子任务;
reduce: 并行执行后, 合并结果(reduce 减少结果项)

2. MapReduce 的举例

刚开始看资料学习的时候,个人感觉不是很好理解, 我分享一个简单的例子,你可能就比较容易理解了。
举例: 有 8 副打乱的扑克牌,没有大小王,但是其中缺一张牌,一共有 52*8-1= 415 张牌,全部混合在一起。
牌桌上的4个人要尽快找出这张牌,
4个人分别是 小张,小王, 小明, 小郭。

A.jpg

第一步:小张,小王, 小明 分别分104张牌, 小郭 1个人分103张牌;--> split 分割任务
第二步: 每个人分别统计各类牌的数量,--> map 处理
比如: 小张统计了红心A 3张, 黑桃A 2张, 方块A 1 张,梅花 A 2 张...
小王统计了红心A 1张, 黑桃A 3张, 方块A 4 张,梅花 A 1张...
小明统计了红心A 2张, 黑桃A 1张, 方块A 1 张,梅花 A 1 张...
小郭统计了红心A 2张, 黑桃A 2张, 方块A 2 张,梅花 A 4张...
第三步:交换牌-> shuffle 过程
红心 都交给 小张;
黑桃 都交给小王;
方块 都交给小明;
梅花都交给小郭;
第四步: 合并结果--> reduce 处理
小张 红心A : 3+1+2+2 = 8, 其他红心的统计...
小王 黑桃A: 2+3+1+2 =8,其他黑桃的统计...
小明 方块A: 1+4+1+2 = 8,其他方块的统计...
小郭 梅花A: 2+1+1+4 = 8, 其他梅花的统计...

第五步: 筛选出结果--> output
分别排序, 找到其中的一张牌是7, 那么就就是缺的这张牌。
看完后,是不是觉得比较简单呢...

3. MapReduce的应用

  • 海量日志统计中统计某个特征(如IP)出现的次数的排序结果

你可能感兴趣的:(举例说明MapReduce的过程)