我需要使用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/