Google云计算之MapReduce

MapReduce是Google提出的用于大规模数据处理的并行编程模型,它简化了处理海量数据的复杂性,提供了容错机制。Map阶段将数据切分成多个部分并进行独立处理,Reduce阶段则合并Map阶段的中间结果。系统通过Master节点进行任务调度,并在Worker节点上执行,当Worker失效时,Master能检测并重新分配任务,确保任务的可靠性。
摘要由CSDN通过智能技术生成

1.什么是MapReduce?

  • MapReduce 是Google提出的一个软件架构,是一种处理海量数据的并行编程模式,用于大规模数据集(通常大于1TB)的并行运算。
  • MapReduce 封装了并行处理、容错处理、本地化计算、负载均衡等 细节,还提供了一个简单而强大的接口。通过这个接口,可以把大尺度的计算自动地并发和分布执行,使编程变得非常容易。
  • MapReduce 也具有较好的通用性,大量不同的问题都可以简单地通过MapReduce来解决。
  • MapReduce 把对数据集的大规模操作,分发给一个主节点管理下的各分节点共同完成,通过这种方式实现任务的可靠执行与容错机制。
  • MapReduce 这种编程模式,保持了服务器之间的均衡,提高了整体效率。

2.它的编程模型


在这里插入图片描述

  • 一个Map函数就是对一部分原始数据进行指定的操作。每个Map操作都针 对不同的原始数据,因此Map与Map之间是互相独立的,这使得它们可以充分并行化。
  • 一个Reduce操作就是对每个Map所产生的一部分中间结果进行合并操作,每个Reduce所处理 的Map中间结果是互不交叉的,所有Reduce产生的最终结果经过简单连接就形成了完整的 结果集,因此Reduce也可以在并行环境下执行。
  • 例如,假设我们想用MapReduce来计算一个大型文本文件中各个单词出现的次数, Map的输入参数指明了需要处理哪部分数据,以“<在文本中的起始位置,需要处理的数据 长度>”表示,经过Map处理,形成一批中间结果“<单词,出现次数>”。而Reduce函数处理 中间结果,将相同单词出现的次数进行累加,得到每个单词总的出现次数。

3.它的实现机制


在这里插入图片描述

  1. MapReduce函数首先把输入文件分成M块,每块大概16M~64MB(可以通过参 数决定),接着在集群的机器上执行分派处理程序。
  2. 这些分派的执行程序中有一个程序比较特别,它是主控程序Master。剩下的执行程序都是作为Master分派工作的Worker(工作机)。总共有M个Map任务和R个Reduce 任务需要分派,Master选择空闲的Worker来分配这些Map或Reduce任务。
  3. 一个被分配了Map任务的Worker读取并处理相关的输入块。它处理输入的数据,并且将分析出的对传递给用户定义的Map函数。Map函数产生的中间结 果对暂时缓冲到内存。
  4. 这些缓冲到内存的中间结果将被定时写到本地硬盘,这些数据通过分区函数分成R个区。中间结果在本地硬盘的位置信息将被发送回Master,然后Master负责把这些位 置信息传送给Reduce Worker。
  5. 当Master通知执行Reduce的Worker关于中间对的位置时,它调用远程过程,从Map Worker的本地硬盘上读取缓冲的中间数据。当Reduce Worker读到所有 的中间数据,它就使用中间key进行排序,这样可使相同key的值都在一起。因为有许多不 同key的Map都对应相同的Reduce任务,所以,排序是必需的。如果中间结果集过于庞大,那么就需要使用外排序。
  6. Reduce Worker根据每一个唯一中间key来遍历所有的排序后的中间数据,并且把key和相关的中间结果值集合传递给用户定义的Reduce函数。Reduce函数的结果写到一个最终的输出文件。
  7. 当所有的Map任务和Reduce任务都完成的时候,Master激活用户程序。此时 MapReduce 返回用户程序的调用点。

4.它的容错机制

  • Master失效

    Master会周期性地设置检查点(checkpoint),并导出Master的数据。一旦某个任务失 效,系统就从最近的一个检查点恢复并重新执行。由于只有一个Master在运行,如果 Master失效了,则只能终止整个MapReduce程序的运行并重新开始。

  • Worker失效

    相对于Master失效而言,Worker失效算是一种常见的状态。Master会周期性地给 Worker发送ping命令,如果没有Worker的应答,则Master认为Worker失效,终止对这个 Worker 的任务调度,把失效Worker的任务调度到其他Worker上重新执行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程小吉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值