我需要使用Java获取在集群中提交Yarn应用程序的用户的详细信息。
我可以使用
从CLI查看这些详细信息type.convert
它提供了具有用户详细信息的作业详细信息列表。
现在,要求是在访问群集中的某些文件之前找到提交当前正在运行的作业并授权他的用户。我该怎么做呢?欢迎任何有效的输入。
答案 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);