前提
我们本地开发好了,然后main运行,这是在本地跑的,没有提交到yarn上
如果我们想本地run的时候能直接提交到yarn上该如何做
修改源码
他的源码中有个YARNRunner这个类,他就是个客户端和yarn打交道
如果我们想修改他的话,我们只需要建个同名的包和类
我们也建立个这个包
package org.apache.hadoop.mapred;
然后把YARNRunner这个类也拷贝过来
如果你工程中有这个类的话,他会优先使用你工程中的
工程中修改
然后我们的main中要添加这些
Configuration conf = new Configuration();
//设置权限,也可以在vm那边伪造
System.setProperty("HADOOP_USER_NAME", "root");
conf.set("fs.defaultFS","hdfs://master:9000");
conf.set("mapreduce.framework.name","yarn");
conf.set("yarn.resourcemanager.hostname","master");
//这里要设置jar包所在位置
job.setJar("mapreduce.job.jar", "D:/wordCount.jar");
Job job = Job.getInstance(conf);
然后我们把jar包打包成wordCount.jar,放到D盘下
然后我们run运行