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

标签 java hadoop apache-spark hadoop-yarn

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

我可以使用 CLI 查看这些详细信息

yarn application -list

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

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

最佳答案

  • yarn 应用程序 的情况下,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

关于java - 使用 Java API 查找提交 yarn 应用程序的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34230154/

相关文章:

scala - 使用 sbt run 或使用 spark-submit 脚本运行 spark 应用程序的区别

java - 如何在Firebase实时数据库中使用onChildRemoved?

java - 无法从 pom.xml 执行 mainClass

java - hive 脚本问题

hadoop - 从 Cloudera 中删除失效主机

apache-spark - 如何在 Spark SQL 中分割一串数字并取其平均值?

scala - 不支持没有相等谓词的流流连接

java - 安卓 SQLite : Data being added again and again

java - Java 中方法一致性问题

hadoop - 如何为 Multi-Tenancy 配置 Hive Impala/Spark?