&&大数据学习&&
🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博>主哦🤞
MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。MapReduce的工作流程分为两个阶段:Map阶段和Reduce阶段。
在Map阶段,MapTask并行度决定机制根据InputFormat数据切片机制对输入数据进行切片,将切片分配给不同的Map任务。每个Map任务对输入数据进行处理,生成一系列的键值对()。
在Reduce阶段,不同的Map任务输出的键值对通过Shuffle机制进行分区和排序,相同key的数据value放在一个集合中。然后,对每个key对应的value集合进行归约处理,即执行Reduce函数。Reduce函数将key和value集合作为输入,进行处理并输出新的键值对。
最后,Reduce阶段输出的键值对作为最终的结果保存在HDFS中。在整个过程中,MapReduce框架负责任务的调度、失败恢复和数据分片等工作,以保证分布式计算的高效性和可靠性。
在MapReduce框架中,不同节点上的运行过程如下:
- Map阶段:大数据经split划分成大小相等的数据块(数据块的大小一般等于HDFS一个块的大小)以及用户作业程序。系统中有一个负责调度的Master节点和许多的Map工作节点。用户作业程序提交给Master节点,Master节点寻找合适的Map节点,并将数据传给Map节点。Master节点启动Map节点执行程序,Map节点尽可能的读取本地或本机架上的数据块进行计算(数据本地化是Mapreduce的核心特征)。每个Map节点处理读取的数据块,并做一些数据整理,并且将中间结果放在本地而非HDFS中,同时通知Master节点Map工作完成,并告知中间结果的存储位置。
- Reduce阶段:Master也寻找合适的Reduce节点并将数据传给Reduce节点。Reduce节点将中间结果处理后将结果输出到一个文件中。
总的来说,MapReduce通过“分而治之”的思想,把对大规模数据集的处理,分发给主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。