从提交的mapreduce作业中获取yarn applicationId

时间:2017-01-13 03:15:32

标签: mapreduce yarn hadoop2

我需要能够从mapreduce作业中获取yarn applicationId。我无法找到任何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来检索纱线applicationId?我知道yarn application -list命令,但我需要能够通过某种API知道程序中的applicationId。对于我可以解析的前缀(&#39; job&#39; vs&#39; application&#39;)看起来jobId与applicationId execpt相同,但我希望我可以使用的API中有一些东西。< / p>

2 个答案:

答案 0 :(得分:1)

我最终解析了jobId,删除了'job'前缀并添加了'application'前缀,因为看起来applicationId没有为mapreduce作业公开,它与具有不同前缀的jobId基本相同。这是一个hacky方法,但现在有效。

答案 1 :(得分:0)

你也可以试试这个:

job.getJobID().appendTo(new StringBuilder("application"))

如果您看到JobID课程,那么他们正在通过&#34; JOB&#34;作为在这种情况下可以被应用程序替换的参数。

这将给出应用程序ID。