入门Hadoop的WordCount程序
本篇文章主要说两部分:简单介绍MapReduce的工作原理;详细解释WordCount程序。
1. MapReduce的工作原理
在《Hadoop in action》一书中,对MapReduce计算模型有了很好的描述,在这里我们直接引用过来:
“
在 Hadoop 中,用于执行 MapReduce 任务的机器角色有两个:一个是 JobTracker;另一个是 TaskTracker, JobTracker是用于调度工作的, TaskTracker是用于执行工作的。一个 Hadoop集群中只有一台 JobTracker。
在分布式计算中, MapReduce 框架负责处理了并行编程中分布式存储、工作调度、负载均衡、容错均衡、容错处理以及网络通信等复杂问题,把处理过程高度抽象为两个函数:map 和 reduce,map 负责把任务分解成多个任务, reduce 负责把分解后多任务处理的结果汇总起来。
在 Hadoop 中,每个 MapReduce 任务都被初始化为一个 Job,每个 Job 又可以分为两种阶段: map 阶段和 reduce 阶段。这两个阶段分别用两个函数表示,即 map 函数和 reduce 函数。 map 函数接收一个<key,value>形式的输入,然后同样产生一个<key,value>形式的中间输出, Hadoop 函数接收一个如<key,(list ofvalues)>形式的输入,然后对这个<