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