为什么Map和Reducer是分开的?为什么一切都无法在Mapper阶段完成。
分离这些任务有什么好处。在mapper阶段或reducer阶段不做所有事情有什么缺点。
答案 0 :(得分:0)
在两个独立的段中分离代码并在它们之间定义指定的数据流表明了并行性的基础。在Hadoop中,主要思想是程序员只考虑两种方法:Map和Reduce,然后将并行性的所有方面都引用到框架中。你只定义了两个方法,然后不关心并发处理,框架就完成了工作。
答案 1 :(得分:0)
由于数据太大而无法移动到单个计算机中,因此我们使用分布式系统来完成工作。在这种情况下,每台计算机在本地处理一片数据,之后,我们需要从每台计算机收集所有数据并再次构建一个“整个”新文件。
通常单个MapReduce作业无法完成工作。您必须执行多个MapReduce作业才能完成工作。
Map阶段即将在本地处理数据,reduce阶段即将从所有计算机中获取所有中间结果,并将它们连接在一起成为一个新的“整个文件”。
有时候地图就足够了,有时则没有。如果必须从数据中提取一些字段,Map就足够了。如果你想对文件进行排序,那么Map是不够的。
范例是: 本地处理(MAP)然后将所有中间结果合并/加入新的“整个文件”(REDUCE)。