Live2D

MapReduce

mapreduce关键点:

1、 当一个reduce worker读取了所有的中间数据后,它通过中间key值对缓冲数据排序,以便相同key值的出现组织在一起。由于通常许多不同的key值映射到同一reduce任务上,因此排序是需要的。如果中间数据量太大而无法适应内存,那么就使用外部排序。reduce的输入为(key,list[])list是同一key的value的所有集合

 

  当所有的map和reduce任务完成之后,master唤醒用户程序。此时此刻,用户程序里的对MapReduce调用返回用户代码。

  成功完成之后,mapreduce执行的输出可以在R个输出文件中得到(每个文件对应一个reduce任务,文件名由用户指定)。

  通常,用户不需要将这R个输出文件合并成一个文件-他们经常把这些文件作为输入传递给另外一个MapReduce调用,或者在另外一个分布式应用中使用它们,

  这种分布式应用能够处理分成多个文件的输入。

 

2、 合并函数在每台执行map任务的机器上执行。通常使用相同的代码实现合并函数和reduce函数。合并函数和reduce函数唯一的区别就是MapReduce库如何处理函数的输出。Reduce函数的输出被写入在最终的输出文件,合并函数的输出被写到中间文件里,该文件被发送给reduce任务

  需要提供数据的reader不必从文件中读取,比如,我们可以容易地定义一个从数据库里读记录的reader,或者从映射在内存中的数据结构读。

posted @   -涂涂-  阅读(111)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示