Hadoop_MapReduce_Shuffle机制—图文详解
创作时间:
作者:
@小白创作中心
Hadoop_MapReduce_Shuffle机制—图文详解
引用
CSDN
1.
https://blog.csdn.net/weixin_48935611/article/details/137871002
Shuffle机制是Hadoop MapReduce框架中一个核心的中间处理过程,它负责在Map任务完成后,将数据重新分配和排序,以便Reduce任务能够正确地处理数据。本文将通过图文结合的方式,深入浅出地介绍Shuffle机制的工作原理及其在MapReduce中的重要性。
Hadoop_MapReduce_Shuffle机制
Shuffle机制是指在分布式计算中用于重新分配数据并进行合并的过程。
MR工作流程
1.Map阶段
- 在MapReduce框架中,任务首先会被划分为多个Map任务,每个 Map 任务负责处理输入数据的一部分。
- 在处理过程中,Map任务会生成键值对(key-value pairs),其中键用于标识数据的分类,值则是实际的数据。
- Map任务会将生成的键值对暂存在内存中的缓冲区中,直到缓冲区达到一定大小或者达到一定数量的键值对。
2.Shuffle阶段
- 一旦 Map 任务的缓冲区填满,或者Map阶段结束,就会触发Shuffle阶段。
- Shuffle阶段的主要任务是将Map任务输出的键值对按照键的哈希值重新分配到不同的Reduce任务上。
- 这意味着具有相同键的键值对将被分配到同一个Reduce任务上,以便进行合并和聚合操作。
(1)输入数据准备
- 每个 Map 任务都会生成一些键值对(key-value pairs)作为输出,这些输出通常存储在内存中的缓冲区中。
- 输出的键值对通常代表着从输入数据中提取的信息,以便后续的数据处理。
(2)数据重分配
当进行数据重分配时,Shuffle 阶段的两个主要过程是分区(Partitioning)和排序(Sorting)。
① 分区(Partitioning)
- 哈希函数应用:
- 在分区过程开始时,系统会对每个键值对中的键(key)应用哈希函数,生成一个哈希值。
- 哈希函数将键映射到一组可能的哈希值中的一个,以便后续的分区和分配操作。
- 分区规则:
- 分区规则确定了如何将哈希值映射到不同的Reduce任务上。
- 典型的分区规则是使用模运算将哈希值映射到一组预定义的分区编号中。
- 这确保了具有相同哈希值的键值对被分配到同一个 Reduce 任务上,从而保证了具有相同键的键值对被发送到同一个 Reduce 任务进行处理。
- 分区数量:
- 分区数量通常由用户指定或根据系统默认值确定。
- 分区数量的选择取决于数据量、集群配置和任务性能需求等因素。
- 通常情况下,分区数量应该足够大,以便在数据重分配过程中实现负载均衡,避免某些Reduce任务负载过重或者负载不均衡的情况。
② 排序(Sorting)
- 分区内排序:
- 在分区之后,每个分区中的键值对可能需要进行排序操作。
- 排序操作确保了在Reduce任务处理数据时,数据以有序的方式进行操作,从而简化了后续的聚合和合并操作。
- 排序算法:
- 框架可能会使用各种排序算法对分区中的键值对进行排序,例如快速排序、归并排序等。
- 排序算法的选择通常取决于数据量、内存限制、性能需求等因素。
- 性能考虑:
- 在排序过程中,性能和内存占用是重要考虑因素。
- 框架可能会采取一些优化策略,如外部排序(External Sorting)来处理大量数据,或者使用内存加速来提高排序速度。
通过分区和排序操作,Shuffle 阶段可以有效地将数据重新组织和分配到不同的 Reduce 任务上,并确保数据以有序的方式进行处理。
(3)数据传输和合并
- 数据传输:
- 一旦数据被分区和排序,就会开始将数据从Map任务所在的节点传输到相应的Reduce任务所在的节点。
- 这个过程涉及网络通信,数据会通过网络传输到目标节点上。
- 合并和聚合:
- 一旦数据到达目标节点,Reduce任务会将来自不同节点的数据合并到本地,并进行必要的聚合操作。
- 合并和聚合操作可能包括计算总数、求和、平均值等,以便生成最终的输出结果。
3.Reduce阶段
- 在Shuffle阶段完成后,每个Reduce任务将接收到分配给它的键值对数据。
- Reduce任务会对接收到的键值对进行合并、排序和聚合等操作,生成最终的输出结果。
- 数据接收:
- 在Shuffle阶段完成后,每个Reduce任务会接收到一个或多个分区的数据。这些数据包含了经过分区和排序后的键值对。
- 数据处理:
- Reduce任务会对接收到的键值对进行处理。
- 合并(Merging):如果数据被分配到多个Reduce任务,每个任务可能会接收到来自不同Mapper任务的相同键的多个值。在合并阶段,Reduce任务会将相同键的值进行合并,以便后续的聚合操作。
- 排序(Sorting):在合并之后,数据可能会被进一步排序,以确保同一键的值按照特定的顺序进行处理。排序操作可以简化后续的聚合操作,并使得输出结果更易于理解和处理。
- 聚合(Aggregation):根据具体的业务逻辑,Reduce任务可能会对数据进行聚合操作,例如计算总和、平均值、最大值、最小值等统计量,或者执行其他自定义的聚合操作。
- 其他操作:除了合并、排序和聚合之外,Reduce任务可能还会执行其他必要的数据处理操作,例如过滤、转换等。
- 输出生成:
- 经过数据处理后,Reduce任务会生成最终的输出结果。这些输出结果通常以键值对的形式组织,并可以存储到文件系统中,或者通过网络传输给其他任务或应用程序。
热门推荐
2024年生育保险报销政策,生育补贴2024年申请流程及时间
老年人脾虚吃什么补得快?这些食物可以减轻脾胃负担
程序员编程选什么笔记本合适
宫保鸡丁:酸甜麻辣间的千年味觉传奇
替格瑞洛片的作用与功效
汽车非法改装会受到何种惩处?如何避免汽车非法改装行为?
不同脸型适合的妆容:菱形脸适合温柔妆,心形脸画浓妆有气场!
警惕!交10万买了工抵房!签不了合同退不了款
如何开发一个代码编辑器或IDE:从需求分析到测试优化的完整指南
水边草本花卉有哪些?这份观赏植物推荐清单请收好
水边草本花卉有哪些
窗帘选高精密还是雪尼尔面料好?
现实题材网文年轻化,《一路奔北》《剖天》等作品受关注
英雄联盟中的不同类型怪物及其作用分析
打喷嚏也有正确姿势
日本厨刀品牌排行
雪地靴又上热搜!经常穿真的很“伤脚”……医生紧急提醒
中国原创手术治疗阿尔茨海默病,78岁阿婆术后认出家人
南京女大学生遇害案:从相恋到谋杀,一场令人痛心的悲剧
过敏性咳嗽症状及治疗方法
红刚玉:产地、特性、应用及市场行情全解析
实习经历也能科学规划,攻略收好
古代宵禁制度探秘:时间与规定的历史演变
双侧基底节区腔隙性脑梗塞可能是什么意思
水蛭素真的能溶解血栓吗?医生专业解答来了
奋进贺岁!“山东第一高”88F标准层幕墙顺利封闭
自助洗车店洗车有什么注意事项?预洗车身避免伤车漆
榕基软件2024年中报深度解析:亏损收窄,应收账款占比高
如何设置团队竞技键位
德系豪华汽车代名词 BBA是什么车