以上文单词计数为例,要将上文的本地运行模式改为集群运行模式,只需要如下三步:
(1)第一步:将程序更改输入和输出的路径
(2)第二步:打jar包 将jar包上传到任意一台的linux上面去
(3)第三步:运行jar包 yarn jar xxxx.jar 类完全路径 input路径 output路径
第一步:将程序更改输入和输出的路径
将run方法中的本地运行模式的代码改为如下:
//集群模式(输入路径)
//TextInputFormat.addInputPath(job,new Path("file:///hdfs:8020/wordCount/input"));
TextInputFormat.addInputPath(job,new Path(args[0]));
//集群模式
// TextOutputFormat.setOutputPath(job,new Path("file:///hdfs:8020/wordCount/output"));
TextOutputFormat.setOutputPath(job,new Path(args[1]));
如果按照第一种地址,可能在输入命令后报如下异常:java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: hdfs:8020。
第二步:打jar包并上传到linux
(1)下载core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml文件到本地磁盘,再将这四个文件粘贴到项目下的resource文件夹下。
(2)打包,idea右侧maven,Lifecycle中,先双击clean,再选中Test取消,最后再双击package;等打包成功后,可以看到左侧项目栏,target下面多了一项xxx.jar包的文件;
(3)将该jar包上传至linux系统;
第三步:运行jar包,输入命令yarn jar xxxx.jar 类路径 集群input路径 集群output路径