二、为什么要用MapReduce

一、为什么要用MapReduce?

  首先MapReduce被广泛应用于日志分析、海量数据的排序、在海量数据中查找特定模式等 场景。而且它非常简单,易于实现且扩展性强。可以通过它编写同事在多台主机上运行的程序,可以使用Python/PHP/C++等非java类语言编写map或reduce程序。还可以在任何安装Hadoop的集群中运行同样的程序,不论这个集群有多少台主机。

二、MapReduce计算模型

  在Hadoop中,用于执行MapReduce任务的机器角色有两个:

一个是JobTracker,另一个是TaskTracker。JobTracker是用于调度工作的,TaskTracker是用于执行工作的。而一个Hadoop集群中只有一台JobTracker。

三、MapReduce的Job

  在Hadoop中,每个MapReduce任务都被初始化为一个job,每个job又可以分为两个阶段:map阶段和reduce阶段。这两个阶段分别用两个函数来表示,也就是map函数和reduce函数。

  map函数接受<key,list of value>形式的输入,然后对value集合进行处理。

  reduce 函数产生0或1个输出。reduce的输出格式也是<key,value>形式的。

原文地址:https://www.cnblogs.com/drq1/p/8458111.html