查找使用Java API提交纱线应用程序的用户

时间:2015-12-11 18:25:52

标签: java hadoop apache-spark yarn

我需要使用Java获取在集群中提交Yarn应用程序的用户的详细信息。

我可以使用

从CLI查看这些详细信息
type.convert

它提供了具有用户详细信息的作业详细信息列表。

现在,要求是在访问群集中的某些文件之前找到提交当前正在运行的作业并授权他的用户。我该怎么做呢?欢迎任何有效的输入。

2 个答案:

答案 0 :(得分:2)

  • 如果yarn application yarn脚本使用org.apache.hadoop.yarn.client.cli.ApplicationCLI,请获取源代码(在我的情况下是org.apache.hadoop:hadoop-yarn-client: 2.7.0)

  • ApplicationCLI中,有一个方法listApplications,您可以从中提取用户:

List<ApplicationReport> appsReport = client.getApplications(appTypes,
    appStates);
  • 因此,一种方法是制作ApplicationCLI的副本,并剥离所有不需要的部分。

至于从作业“内”获取应用程序ID,有SparkContext.applicationId

答案 1 :(得分:0)

根据我的理解,我们可以获得提交这样的工作的用户名:

job.getConfiguration().get(MRJobConfig.USER_NAME);