前提

我们本地开发好了,然后main运行,这是在本地跑的,没有提交到yarn上
如果我们想本地run的时候能直接提交到yarn上该如何做

修改源码

他的源码中有个YARNRunner这个类,他就是个客户端和yarn打交道

如果我们想修改他的话,我们只需要建个同名的包和类

我们也建立个这个包

  1. package org.apache.hadoop.mapred;

然后把YARNRunner这个类也拷贝过来

如果你工程中有这个类的话,他会优先使用你工程中的

工程中修改

然后我们的main中要添加这些

  1. Configuration conf = new Configuration();
  2. //设置权限,也可以在vm那边伪造
  3. System.setProperty("HADOOP_USER_NAME", "root");
  4. conf.set("fs.defaultFS","hdfs://master:9000");
  5. conf.set("mapreduce.framework.name","yarn");
  6. conf.set("yarn.resourcemanager.hostname","master");
  7. //这里要设置jar包所在位置
  8. job.setJar("mapreduce.job.jar", "D:/wordCount.jar");
  9. Job job = Job.getInstance(conf);

然后我们把jar包打包成wordCount.jar,放到D盘下

然后我们run运行