MapReduce运行原理
|
副标题[/!--empirenews.page--]
MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。MapReduce采用”分而治之”的思想,把对大规模数据集的操作,分发给一个主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。简单地说,MapReduce就是”任务的分解与结果的汇总”。 MapReduce架构 先来看一下MapReduce1.0的架构图 ![]() 上图中的TaskTracker对应HDFS中的DataNode, 在MapReduce1.x中,用于执行MapReduce任务的机器角色有两个:一个是JobTracker;另一个是TaskTracker,JobTracker是用于调度工作的,TaskTracker是用于执行工作的。一个Hadoop集群中只有一台JobTracker。 流程分析
以上是在客户端、JobTracker、TaskTracker的层次来分析MapReduce的工作原理的,下面我们再细致一点,从map任务和reduce任务的层次来分析分析吧。 MapReduce运行流程 以wordcount为例,运行的详细流程图如下 ![]() 1.split阶段 首先mapreduce会根据要运行的大文件来进行split,每个输入分片(input split)针对一个map任务,输入分片(input split)存储的并非数据本身,而是一个分片长度和一个记录数据位置的数组。输入分片(input split)往往和HDFS的block(块)关系很密切,假如我们设定HDFS的块的大小是64MB,我们运行的大文件是64x10M,mapreduce会分为10个map任务,每个map任务都存在于它所要计算的block(块)的DataNode上。 2.map阶段 map阶段就是程序员编写的map函数了,因此map函数效率相对好控制,而且一般map操作都是本地化操作也就是在数据存储节点上进行。本例的map函数如下:
根据空格切分单词,计数为1,生成key为单词,value为出现1次的map供后续计算。 3.shuffle阶段 shuffle阶段主要负责将map端生成的数据传递给reduce端,因此shuffle分为在map端的过程和在reduce端的执行过程。 先看map端: ![]()
reduce端: ![]() reduce节点从各个map节点拉取存在磁盘上的数据放到Memory Buffer(内存缓冲区),同理将各个map的数据进行合并并存到磁盘,最终磁盘的数据和缓冲区剩下的20%合并传给reduce阶段。 4.reduce阶段 reduce对shuffle阶段传来的数据进行最后的整理合并
MapReduce的优缺点 优点:
4.适合PB级别以上的大数据的分布式离线批处理。 缺点:
(编辑:阜新站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- VR/AR远程协作工具开发公司Glue Collaboration完成385万美元
- 英国VR演示平台VRtuoso用户数突破百万
- 射击游戏《SUPERHOT:MIND CONTROL DELETE》尚无VR版本计划
- 中国电信号百控股与游族网络达成合作,共建“5G VR小镇”
- 首发| “清华学霸”5年融4轮又获投5000万:他的激光雷达出货
- IDC报告:2020年AR/VR头显出货量将达到710万台,2024年将达
- VIAVI亮相2019世界移动通信大会,展示面向5G的确认、验证及
- 2019年将塑造数据中心行业的八大趋势
- TCP数据段格式+UDP数据段格式详解
- 英国AR内容厂商Poplar完成200万欧元种子轮融资





