从提交的mapreduce作业获取应用程序ID

从提交的mapreduce作业获取应用程序ID,mapreduce,yarn,hadoop2,Mapreduce,Yarn,Hadoop2,我需要能够从mapreduce作业中获取纱线应用程序ID。我找不到任何API来实现这一点。我的mapreduce作业的一个示例: Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(TokenizerMapper.class); job.setCombinerCl

我需要能够从mapreduce作业中获取纱线应用程序ID。我找不到任何API来实现这一点。我的mapreduce作业的一个示例:

Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.submit();
job.waitForCompletion(true);

是否有类似于
job.getJobId
的API来检索应用程序ID?我知道
warn application-list
命令,但我需要能够通过某种API知道程序中的applicationId。看起来jobId与applicationId execpt的前缀(“job”vs“application”)相同,我可以解析它,但我希望API中有一些东西可以使用。

我最终解析了jobId,删除“job”前缀并添加“application”前缀,因为它似乎没有为mapreduce作业公开applicationId,并且它基本上与具有不同前缀的jobId相同。这是一种骇人的方法,但目前仍然有效。

您也可以尝试以下方法:

job.getJobID().appendTo(new StringBuilder("application"))
如果您看到JobID类,那么它们将“JOB”作为参数传递,在本例中,该参数可以由应用程序替换

这将给出应用程序id