Hadoop实现了MapReduce分布式计算模型。MapReduce将应用程序的工作分解成很小的工作块。HDFS为了做到可靠性,创建了多份数据块的复制,并将它们放置在服务器群做的计算节点中,MapReduce就可以在它们所在的节点上处理这些数据。
Map负责将数据打散,Reduce负责对数据进行聚集,用户只需要实现map和reduce两个接口,即可完成TB级数据的计算,常见的包括日志分析和数据挖掘等。Hadoop MapReduce的实现也采用了Master/Slave结构。Master也叫做JobTracker,而Slave叫做TaskTracker。JobTracker负责Job和Tasks的调度,而TaskTracker负责执行Tasker。
Hadoop Map/Reduce是一个软件框架,基于它写出来的应用程序能够运行在由上千个系统组成的大型集群上,并以一种可靠兼容的方式并行处理上T级别的数据集。一个Map/Reduce作业(job)通常会把输入的数据集切分为若干独立的数据块,由map任务(task)以完全并行的方式处理它们。框架对map的输出先进行排序,然后把结果输入给reduce任务。通常,作业的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和监控,以及重新执行已经失败的任务。
MapReduce的工作过程分为两个阶段:map阶段和reduce阶段。每个阶段都有键/值对作为输入和输出,并且它们的类型可由程序员选择。程序员还可以具体定义两个函数:map函数和reduce函数。