大数据学习(6)-hive底层原理Mapreduce

&&大数据学习&&

🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门

💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博>主哦🤞


MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。MapReduce的工作流程分为两个阶段:Map阶段和Reduce阶段。

在Map阶段,MapTask并行度决定机制根据InputFormat数据切片机制对输入数据进行切片,将切片分配给不同的Map任务。每个Map任务对输入数据进行处理,生成一系列的键值对(<k,v>)。

在Reduce阶段,不同的Map任务输出的键值对通过Shuffle机制进行分区和排序,相同key的数据value放在一个集合中。然后,对每个key对应的value集合进行归约处理,即执行Reduce函数。Reduce函数将key和value集合作为输入,进行处理并输出新的键值对。

最后,Reduce阶段输出的键值对作为最终的结果保存在HDFS中。在整个过程中,MapReduce框架负责任务的调度、失败恢复和数据分片等工作,以保证分布式计算的高效性和可靠性。

在MapReduce框架中,不同节点上的运行过程如下:

  1. Map阶段:大数据经split划分成大小相等的数据块(数据块的大小一般等于HDFS一个块的大小)以及用户作业程序。系统中有一个负责调度的Master节点和许多的Map工作节点。用户作业程序提交给Master节点,Master节点寻找合适的Map节点,并将数据传给Map节点。Master节点启动Map节点执行程序,Map节点尽可能的读取本地或本机架上的数据块进行计算(数据本地化是Mapreduce的核心特征)。每个Map节点处理读取的数据块,并做一些数据整理,并且将中间结果放在本地而非HDFS中,同时通知Master节点Map工作完成,并告知中间结果的存储位置。
  2. Reduce阶段:Master也寻找合适的Reduce节点并将数据传给Reduce节点。Reduce节点将中间结果处理后将结果输出到一个文件中。

总的来说,MapReduce通过"分而治之"的思想,把对大规模数据集的处理,分发给主节点管理下的各个分节点共同完成,然后通过整合各个节点的中间结果,得到最终结果。

相关推荐
Rabitebla3 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
Gary移动存储固件4 小时前
eMMC5.1协议中文学习讲解(6.6.17~6.6.22.4.6)
学习·ufs·emmc·nand·存储固件
一个天蝎座 白勺 程序猿4 小时前
别让收藏夹替你学习:我搭AI知识体系的完整方法,脚本直接拿去用
人工智能·学习·ai·ai学习
P1Browser5 小时前
账号触发平台安全审核?拆解标准申诉流程与材料清单
大数据·人工智能·安全·多账号管理·指纹浏览器·账户安全·运营合规
楚山之石5 小时前
【Nat Biomed Eng】Connectome 2.0 超高梯度扫描仪:500 mT/m 与 600 T/m/s 把活体人脑微观结构分辨推进到亚微米级
图像处理·学习·数据分析·mri
坤坤子吖8 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
云南新人和数采集团11 小时前
云南靠谱软件开发公司选型指南:以昆明新腾科技为例
大数据·人工智能·科技
LGL6030A12 小时前
Java学习历程31——初识Spring Boot
java·spring boot·学习
AllData公司负责人12 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
阿达和自己13 小时前
springboot学习-springboot引入MyBatis-Plus
spring boot·学习·mybatis