先将文件进行分割后,进行 map 操作,后面进行 shuffle 操作,分为 map 端 shuffle 和 reduce端 shuffle。
map 输出结果放在缓冲区,当缓存区到达一定阈值时,将其中数据 spill (也就是溢写)到磁盘,然后进行 partition, sort, combine 操作,这样多次 spill 后,磁盘上就会有多个文件,merge 操作将这些文件合并成一个文件。
reduce 端 shuffle 从 map 节点拉取数据文件,如果在内存中放得下,就直接放在内存中,每个 map 对应一块数据,当内存占用量达到一定程度时,启动内存时 merge,把内存中的数据输出到磁盘的一个文件上如果在内存中放不下的话,就直接写到磁盘上。一个 map 数据对应一个文件,当文件数量达到一定阀值时,开始启动磁盘文件 merge,把这些文件合并到一个文件中。最后,把内存中的文件和磁盘上的文件进行全局 merge,形成一个最终端文件,做为 reduce 的输入文件。当然 merge过程中会进行 sort,combine 操作。
MapReduce运行原理简述
最新推荐文章于 2025-03-31 19:58:09 发布