你可以在集群模式(或者伪分布式模式)下运行MapReduce作业。在集群模式下运行作业与在本地模式下运行有以下两点不同:
运行Map和Reduce任务的节点往往与提交作业的客户端节点不是同一个节点。
Map和Reduce任务都在各自的JVM中运行。
在集群模式下运行WordCount程序的第一步是把程序的类文件打包成一个JAR文件。程序用以下方法提交到集群执行:
尽管在我们的客户端程序中并没有使用一些需要特殊指定的函数库,但是我们还是使用了下面的方法,该方法可以使程序访问那些指定的函数库:
Hadoop命令使用HADOOP_CLASSPATH环境变量,用于在客户端程序提交运行之前配置客户端节点的CLASSPATH环境变量。
Hadoop命令还负责把prohadoop-0.0.1-SNAPSHOT.jar文件发送到远程节点,并确保准备运行Mapper和Reducer实例的节点中已经配置好CLASSPATH环境变量。这个正是第1章中提到的把程序移动到数据附近的例子。
<INPUT_PATH> 和 <OUTPUT_PATH>指向HDFS上的文件夹。前者指向的文件夹中包含了Mapper实例要读取的输入文件。后者指向的文件夹是Reducer实例执行结果输出的文件夹。