标签:Map 14 reduce MapReduce hadoop 切片 键值 排序 数据
Map阶段执行过程
-
第一阶段:
把输入目录下的文件按照一定标准逐个进行逻辑切片,形成切片规划。
默认切片大小和块的大小相同128M,每一个切片由一个MapTask处理。
-
第二阶段:
对切片数据按照一定规则读取解析返回<key,value>对。
默认按行读取数据。key是每一行起始位置的偏移量,value是本行的文本内容。
-
第三阶段:
调用Mapper类中的map方法。每读取出一个<key,value>对,调用一次map方法。
-
第四阶段:
按照一定规则对Map输出的键值对进行分区partition。
默认不分区,因为只有一个reducetask,分区的数量就是reducetask运行的数量。
-
第五阶段:
Map输出数据写入内存缓存区,达到比例溢出到磁盘上。溢出spill的时候对键key进行排序sort。默认根据key字典序排序。
-
第六阶段:
对所有的溢出文件进行最终的merge合并,成为一个文件。
Reduce阶段执行过程
-
第一阶段:
ReduceTask会主动复制拉取属于自己要处理的数据。
-
第二阶段:
把拉取的数据,全部进行合并merge,即把分散的数据合并成一个大的数据。再对合并后的数据进行排序。
-
第三阶段:
对排序后的键值对调用reduce方法。键相等的键值对调用一次reduce方法。最后把这些输出的键值对写入HDFS文件中。
Shuffle洗牌机制
在MapReduce中Shuffle并不是将数据洗乱,而是将数据整理成有一定规则的数据,方便reduce端接收。
shuffle这个过程在 Map产生输出数据开始到Reduce取得数据作为输出之前 这个阶段。
shuffle频繁的涉及到内存磁盘之间的反复,这就是MapReduce相比SparkFlink计算慢的原因。
标签:Map,14,reduce,MapReduce,hadoop,切片,键值,排序,数据 来源: https://www.cnblogs.com/S2Jgogo/p/16153016.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。