Hadoop MapReduce

admin2024-04-03  0

MapReduce分为两个阶段,分为Map阶段和Reduce阶段,可以自定义map函数reduce函数
Hadoop MapReduce,在这里插入图片描述,第1张

map函数的输入是行在文件的字节偏移量,value是文件的一行数据

reduce函数的输入是key和对应key的value组,然后reduce函数可以对这一组数据进行处理

再来看mapreduce是如何实现的,因为可以知道reduce阶段value是一组的,包括mapreduce还发生了文件读取写入文件的操作,包括一些序列化

有一个文件时,文件在底层操作系统是很多个数据块

map是以数据切片逻辑进行处理的,所以当读取文件数据时,会对物理文件进行逻辑切片,然后一个切片就对应一个MapTask尽量保证切片大小等于数据块大小,让一个MapTask直接本地处理加快处理速度

Map阶段处理逻辑,map读入文件的每行数据,然后以key-value的方式处理输出到一个分区,输出到哪个分区取决于默认的还是自定义分区处理了,默认是根据键的哈希值确定分区

分区其实是先保存到一个环形缓存区,当环形缓存区达到一定阈值的时候,就会把缓冲区数据落盘落盘前会对分区内数据进行快速排序,如果有多个小文件,会对多个小文件进行归并排序,合成一个大文件,然后分区和reduceTask的数量一样

reduce阶段,reduce可会读取所有mapTask对应分区的所有文件,如果有多个文件,也会进行归并排序,这样就保证了Reduce函数的输入里的value,是一个相同Key的value集合。然后经过reduceTask函数进行数据处理,最终输出,输出文件数也跟reduceTask的个数相关,reduceTask的数目不能大于分区数目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!