深入浅出详解MapReduce

本文参考自b站视频深入浅出讲解 MapReduce_哔哩哔哩_bilibilihttps://www.youtube.com/watch?v=Rz8JCS9TfOQhttps://www.bilibili.com/video/BV1Vb411m7go强推, 建议一定看到最后!

目录

问题的起源

MapReduce的两个函数

MapReduce的过程

1. 统计单词数

 2. 建立倒排索引


问题的起源

在处理大数据问题时, 如果你有很多数据(例如1TB), 你要对这个数据进行操作呢, 例如最简单的增, 删, 查, 改, 或者较复杂的, 统计单词数, 建立倒排索引。不管哪种操作,都会有大量的开销, 所以这时就出现了MapReduce, 它的主要思想是分治法

MapReduce的两个函数

顾名思义, MapReduce就是由两个最核心的函数组成的: map函数和reduce函数

  • map函数就是拆分, 例如把一辆汽车map成很多有用的零件: 输入就是一辆汽车, 输出就是很多零件

  •  reduce函数就是组装, 例如把汽车的零件和其他机械的零件reduce成一个变形金刚, 输入就是各种零件, 输出就是变形金刚

 理解了两个核心函数, 我们来看看MapReduce的整个过程

MapReduce的过程

MapReduce的过程分为六个阶段:

  1. input 输入数据
  2. split 对数据进行有依据的分组
  3. map 把分组之后的数据拆分/映射为其他的新数据
  4. shuffle 把新数据在本地分别有序储存起来
  5. reduce 把shuffle后各处的数据放在一起进行组装
  6. finalize 输出组装后的数据

 下面是一个厨房做菜的栗子

  1. input 拿到了很多食物原料
  2. split 各个厨师取用不同的原料
  3. map 厨师们把拿到的原来切碎处理 
  4. shuffle 切好的的食材各自放进微波炉, 烤箱等机器中
  5. reduce 熟透了的事务进行组合成为菜品
  6. finalize 菜品呈现给顾客

了解了MapReduce的基本流程之后, 可以看看下面给出的两个应用实例

1. 统计单词数

  1. input 输入是很多个英语句子
  2. split 对每个句子分开操作
  3. map 把每个句子拆分成一个一个的单词 
  4. shuffle 对所有的单词排序, 相同的单词放在一起
  5. reduce 相同的单词组合成一个, 并计算个数
  6. finalize 输出就是每个单词的个数

 2. 建立倒排索引

什么是倒排索引?  记录很多本书中出现的单词的时候

如果记录的是每个句子中出现了哪些单词(先找句子再找单词), 那么这是正排索引

如果记录的是每个单词分别出现哪些句子里(先找单词再找句子), 那么这就是倒排索引

  1. input 输入是很多个英语句子
  2. split 对每个句子分开操作
  3. map 把每个句子拆分成一个一个的单词, 记录这些单词是出现在哪些句子里
  4. shuffle 对所有的单词排序, 相同的单词放在一起
  5. reduce 不同的单词组合成一个, 并计算分别出现在哪些句子里
  6. finalize 输出就是每个单词在那几个句子里

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值