Hadoop Shuffle学习

Shuffle

In many ways,the shuffle is the heart of MapReduce and is where the ‘magic’ happens

Shuffle横跨Map、Reduce两个阶段

在这里插入图片描述

  • Map阶段
  1. 进入Memory Buffer。每个Map都对应一个Memory Buffer ,每个map处理以后的结果都会进入环形缓存区。

  2. Partition。对每一个<k,v>进行分区(打标签)。具体实现是根据key或value及reduce的数量来决定当前的这对输出数据最终应该交由哪个reduce task处理。默认取key的hash值后再以reduce task数量取模。默认的取模方式只是为了平均reduce的处理能力,如果用户自己对Partitioner有需求,可以订制并设置到job上。

    有很多文章写得是spill以后,进行分区和排序。个人认为,数据在内存处理更快更方便,将处理以后的数据再存入硬盘,显然更合理。

  3. Spill。当环形缓存区容量达到80%时(避免数据处理速度大于读写速度,造成数据丢失),就会开启单独的溢写进程, 将数据临时写入磁盘

  4. Sort。溢写开始时,就会开始对数据根据key进行排序,且是对同一分区上的数据进行排序,即对序列化的字节排序。

  5. combiner(可选)。当很多<k,v>需要发送到同一reduce端时,则他们被拼接到一起。比如<"aaa”,1>、<“aaa”,1>这样的键值对,我们就应该把它们的值合在一起,成为<“aaa”,2>。这个combiner是可以用户设置的,可以做累加取最值等操作,它被用于减少溢写到磁盘的数据量,对map task的中间结果进行优化,并将结果作为reduce task的输出。

  6. merge。当map task结束时,内存缓冲区内的文件即使不到80%,也会成为一个溢写文件。这里会将溢写文件归并到一起(减少输出),这个过程即为merge.在wordcount中,map task1的<“aaa”,5>,map task2的<“aaa”,1>会被merge成一个group,{“aaa”,[5,1,2,3…]},group中的值就是从不同溢写文件中读取出来的,在这里又会做一个combine,比如wordcount,这里又会将“aaa”的value合并(仍然没有计数)。

    至此map端结束,reduce task不断地通过rpc从job tracker获取map task是否完成,如果获知某台tasktracker上的map task完成,shuffle的后半段即开始启动
  • Reduce端
  1. Copy。本质就是拉数据,通过http请求map输出文件中,属于当前reduce分区的数据。

  2. Merge。把不同map端copy获取的值进行归并,copy来的值先放内存中,与map端不同,这里的内存缓 存区更加灵活,(与jvm heap size有关,不做深究),但也是数据量达到一定阈值,就启动内存到磁盘merge。同样,如果设置了combiner,也是会启动。

    最终的数据默认以文件存在硬盘中,可以通过优化,存在内存中。

感谢下面两篇文章作者深入浅出的讲解

简单搞定Shuffle机制运行原理

MapReduce:详解Shuffle过程

光伏储能虚拟同步发电机VSG并网仿真模型(Similink仿真实现)内容概要:本文档介绍了光伏储能虚拟同步发电机(VSG)并网仿真模型的Simulink实现方法,重点在于通过建立光伏储能系统与虚拟同步发电机相结合的仿真模型,模拟其在并网过程中的动态响应与控制特性。该模型借鉴了同步发电机的惯性和阻尼特性,提升了新能源并网系统的频率和电压支撑能力,增强了系统的稳定性与可控性。文档还提及相关电力系统仿真技术的应用,包括逆变器控制、储能配置、并网稳定性分析等,并提供了完整的Simulink仿真文件及技术支持资源链接,便于科研人员复现与二次开发。; 适合人群:电气工程、自动化、能源系统等相关专业的研究生、科研人员及从事新能源并网技术开发的工程师。; 使用场景及目标:①用于研究光伏储能系统在弱电网条件下的并网稳定性问题;②掌握虚拟同步发电机(VSG)控制策略的设计与仿真方法;③支持高水平论文(如EI/SCI)的模型复现与创新研究;④为微电网、智能电网中的分布式能源接入提供技术参考。; 阅读建议:建议结合提供的Simulink模型文件与文档说明逐步操作,重点关注VSG控制模块的参数设置与动态响应分析,同时可延伸学习文中提及的MPPT、储能管理、谐波分析等相关技术,以提升综合仿真能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

simpsun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值