Hadoop(14)Mapreduce的运行模式
Mapreduce的运行模式
本地模式
我们的上面的案例1的运行模式就是本地模式,mapreduce
程序是被提交给LocalJobRunner
在本地以单进程的形式运行,输入和输出路径既可以在本地文件系统,也可以在hdfs上。
本地模式非常便于进行业务逻辑的debug
,只要在eclipse
或IDEA
中打断点即可
怎样实现本地运行?
-
写一个程序,不要带集群的配置文件
-
设置参数值:
mapreduce.framework.name=local
-
设置参数值:
yarn.resourcemanager.hostname=local
本地模式运行代码设置:
public class MainClass {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.set("mapreduce.framework.name","local");
conf.set("yarn.resourcemanager.hostname","local");
//上面这两行代码实际上不写也可以,值默认是local的。
int exitCode = ToolRunner.run(conf, new Assem(), args);
System.exit(exitCode);
}
}
集群运行模式
集群运行模式是将mapreduce
程序提交给yarn
集群,分发到很多的节点上并发执行,处理的数据和输出结果应该位于hdfs
文件系统
提交程序给集群的实现步骤:
1、将程序打成JAR
包
2、将jar
包上传到Linux
本地文件系统
3、通过JavaApi
方式将数据源上传到hdfs
文件系统(路径和程序中指定的一致)
4、在集群的任意一个节点上用hadoop
或者yarn
命令运行jar
包。
//运行语法:hadoop jar jar的包名 main方法所在的类的相对路径(不要.java后缀) [参数1...参数2...]
hadoop jar Wordcount-1.0-SNAPSHOT.jar RunClass
或者
yarn jar Wordcount-1.0-SNAPSHOT.jar RunClass
注意事项:
程序中设定的输出路径不能事先存在,而且在填写main
方法所在的类的相对路径时,要注意,如下图:
建议使用copy Reference
,复制出来直接用,不用截取,不要使用copy Path
。