网站备案幕布拍照,呼市企业网站制作,关键词seo公司,房产网站门户系统一、Shuffle概述
Reduce阶段三个步骤#xff0c;Shuffle就是一个随机、洗牌操作 Shuffle是什么
针对多个map任务的输出按照不同的分区#xff08;Partition#xff09;通过网络复制到不同的reduce任务节点上#xff0c;这个过程就称作为Shuffle。 二、Shuffle过程 #…一、Shuffle概述
Reduce阶段三个步骤Shuffle就是一个随机、洗牌操作 Shuffle是什么
针对多个map任务的输出按照不同的分区Partition通过网络复制到不同的reduce任务节点上这个过程就称作为Shuffle。 二、Shuffle过程 1Map端 1在map端首先是InputSplit在InputSplit中含有DataNode中的数据每一个InputSplit都会分配一个Mapper任务Mapper任务结束后产生K2,V2的输出这些输出先存放在缓存中每个map有一个环形内存缓冲区用于存储任务的输出。默认大小100MBio.sort.mb属性一旦达到阀值0.8(io.sort.spil l.percent)一个后台线程就把内容写到(spill)Linux本地磁盘中的指定目录mapred.local.dir下的新建的一个溢出写文件。
2写磁盘前要进行partition、sort和combine等操作。通过分区将不同类型的数据分开处理之后对不同分区的数据进行排序如果有Combiner还要对排序后的数据进行combine。等最后记录写完将全部溢出文件合并为一个分区且排序的文件
3最后将磁盘中的数据送到Reduce中图中Map输出有三个分区有一个分区数据被送到图示的Reduce任务中剩下的两个分区被送到其他Reducer任务中。而图示的Reducer任务的其他的三个输入则来自其他节点的Map输出。
2Reduce端 1Copy阶段
Reducer通过Http方式得到输出文件的分区。
reduce端可能从n个map的结果中获取数据而这些map的执行速度不尽相同当其中一个map运行结束时reduce就会从JobTracker中获取该信息。map运行结束后TaskTracker会得到消息进而将消息汇报给JobTrackerreduce定时从JobTracker获取该信息reduce端默认有5个数据复制线程从map端复制数据
2Merge阶段
如果形成多个磁盘文件会进行合并
从map端复制来的数据首先写到reduce端的缓存中同样缓存占用到达一定阈值后会将数据写到磁盘中同样会进行sort、group等过程。如果形成了多个磁盘文件还会进行合并最后一次合并的结果作为reduce的输入而不是写入到磁盘中
3Reducer的参数
最后将合并后的结果作为输入传入Reduce任务中 三、Hadoop中的压缩
Shuffle过程中看到map端在写磁盘的时候采用压缩的方式将map的输出结果进行压缩是一个减少网络开销很有效的方法
解压缩算法的实现
Codec Codec是Hadoop中关于压缩解压缩的算法的实现在Hadoop中codec由CompressionCode的实现来表示 MapReduce的输出进行压缩 输出属性如下所示 在Java中设置输出压缩 reduce端输出压缩使用了Codec中的Gzip算法也可以使用bzip2算法