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

Find the user who submitted a yarn application using the Java API

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

我可以使用

从 CLI 查看这些详细信息
yarn application -list

它给出了包含用户详细信息的工作详细信息列表。

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

  • yarn application 的情况下,yarn 脚本使用 org.apache.hadoop.yarn.client.cli.ApplicationCLI,所以获取源代码(在我的例子中是 org.apache.hadoop:hadoop-纱线客户端:2.7.0)

  • ApplicationCLI里面有一个方法listApplications,可以从这个里面提取用户:

List<ApplicationReport> appsReport = client.getApplications(appTypes,
    appStates);
  • 因此,一种方法是复制 ApplicationCLI,然后删除不需要的所有部分。

至于从 "within" 个工作中获取应用程序 ID,有 SparkContext.applicationId

据我了解,我们可以这样获取提交工作的用户名:

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