C/C++教程

MapReduce计算模型

本文主要是介绍MapReduce计算模型,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
  • Hadoop的主要执行(计算)框架
  • 大而化小、异而化同
  • 每个阶段都是用键值对作为输入和输出
  • Job = Map + Reduce
  • 通过map和reduce两个操作实现了并行分布式计算框架,mapreduce的中间计算结果需要存储在HDFS的磁盘中,频繁访问磁盘极大降低了数据处理的效率;Mapreduce只提供map和reduce两个操作,大量的操作需要开发者重写代码来实现,实现成本较高

PC机分为三类:

  • Master(负责调度,相当于工地的工头)
  • Worker(相当于干活的工人)
    • Mapper(处理任务)
    • Reducer(汇总工作)
      举例来说,统计一系列文档中的词频。文档数量规模很大,有1000万个文档,英文单词的总数可能只有3000(常用的)。
      那么input M=10000000,output N=3000。于是,我们搞了10000个PC做Mapper,100个PC做Reducer。每个Mapper做1000个文档的词频统计,统计之后把凡是和同一个word相关的统计中间结果传给同一个Reducer做汇总。比如某个Reducer负责词表中前30个词的词频统计,遍历10000个PC,这10000个Mapper PC把各自处理后和词表中前30个词汇相关的中间结果都传给这个Reducer做最终的处理分析。

缺陷:
第一,一个Map Reduce任务只有Map和Reduce两个阶段,复杂的计算需要大量的Job共同完成,Job之间的依赖关系需要由开发者自己管理,这增加了开发者的研发难度。
第二,Hadoop在进行Map Reduce计算的过程中,会将map的计算结果写入到本地磁盘或Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)上,然后再通过shuffle过程将计算结果发送到reduce上进行处理,反复的磁盘读写使Hadoop不能够满
足低延迟的交互式数据挖掘任务的要求。
第三,时间延迟高,Reduce Task需要等待所有Map Task都完成后才可以开始


在这里插入图片描述

在这里插入图片描述

这篇关于MapReduce计算模型的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!