《Hadoop技术原理》课件——6.分布式计算框架MapReduce.pptx
Hadoop技术原理
分布式计算框架MapReduce
MapReduce简介
·什么是MapReduce
MapReduce是一种简化并行计算的编程模型,用于进行大数据量的计算。·MapReduce设计思想
MapReduce采用“分而治之”的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个子节点共同完成,然后整合各个子节点的中间结果,得到最终的计算结果。
简而言之,MapReduce就是“分散任务,汇总结果”
MapReduce简介
01
JobTracker
TaskTrackerTaskTracker
Map任务Reduce任务Map任务Reduce任务
Client
TaskTracker
Map任务Reduce任务
MapReduce简介
MapReduce架构
02
·
03MapReduce简介
●JobTracker
JobTracker负责
·接受客户端提交作业
·分配任务到计算节点(TaskTracker)
·监控作业的运行情况,更新作业状态,作业容错处理·客户端可通过命令行或Web页面查看作业状态
JobTracker可以和NameNode运行在同一个服务器上
·集群规模较大或是任务繁重的场景,建议单独运行JobTracker
·JobTracker任务分配策略
把计算移动到数据
JobTracker会与NameNode通信以定位任务所需数据的位置·从而更有效的分配任务执行节点
JobTracker不保证一定在数据所在节点处理数据
·取决与任务节点的空闲状态
·尽量在一个机架
MapReduce简介
04
05MapReduce简介
●TaskTracker
TaskTracker执行JobTracker指令,是任务运行节点·调用Map和Reduce,以及Shuffle和Sort操作·通常和DataNode装在一起
·发送心跳消息给JobTracker
·向JobTracker汇报可运行任务数量
每一个任务会生成一个单独的JVM进程
·确保TaskTracker进程不会因为用户代码而崩溃
·TaskTracker监视这些生成的进程,捕获输出和退出代码
·MapReduce特点
易于编程
良好的扩展性
高容错性
擅长对PB级以上海量数据进行离线处理
·MapReduce不适用场景
实时计算
MapReduce无法像MySQL一样,在毫秒或者秒级内返回结果。
流式计算
流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。DAG(有向图)计算
多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。在这种情况下,
MapReduce并不是不能做,而是使用后,每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,降低使用性能。
MapReduce简介
06
MapReduce编程模型
MapReduce编程模型
·MapReduce编程模型概论
从MapReduce自身的命名特点可以看出,MapReduce由两个阶段组成:Map和Reduce。用户只需要编写map()和reduce()两个函数,即可完成分布式程序的设计。
·输入一个大文件,通过Split之后,将其分为多个分片
·每个文件分片由单独的机器去处理,这就是Map方法
·将各个机器计算的结果进行汇总并得到最终结果,这就是Reduce方法
01
02MapReduce编程模型
·MapReduce编程模型概论
大任务:1+2+3+4+5+6+7+8+9+10
Split
小任务:1+2+3+45+6+78+9+10k1,v1
Map阶段
k2,v27
101827sk3,v3
Reduce阶段
55