查找使用JavaAPI提交应用程序的用户
我需要获得使用Java在集群中提交纱线应用程序的用户的详细信息 我可以使用CLI查看这些详细信息查找使用JavaAPI提交应用程序的用户,java,hadoop,apache-spark,yarn,Java,Hadoop,Apache Spark,Yarn,我需要获得使用Java在集群中提交纱线应用程序的用户的详细信息 我可以使用CLI查看这些详细信息 yarn application -list 它提供包含用户详细信息的作业详细信息列表 现在,需要找到提交当前运行作业的用户,并在访问集群中的某些文件之前对其进行授权。我该怎么做呢?欢迎任何有效的输入。 如果是warn应用程序,warn脚本使用org.apache.hadoop.warn.client.cli.ApplicationCLI,那么就获取源代码(在我的例子中是org.apache.ha
yarn application -list
它提供包含用户详细信息的作业详细信息列表
现在,需要找到提交当前运行作业的用户,并在访问集群中的某些文件之前对其进行授权。我该怎么做呢?欢迎任何有效的输入。- 如果是
,warn应用程序
脚本使用warn
,那么就获取源代码(在我的例子中是org.apache.hadoop:hadoop-warn-client:2.7.0)org.apache.hadoop.warn.client.cli.ApplicationCLI
- 在
中,有一个方法ApplicationCLI
,您可以从中提取用户:listApplications
List appsReport=client.getApplications(appTypes,
(美国);
- 因此,一种方法是复制一份
,去掉所有不需要的部分ApplicationCLI
至于从作业“内部”获取应用程序ID,有
SparkContext.applicationId
据我了解,我们可以获取提交作业的用户名,如下所示:
job.getConfiguration().get(MRJobConfig.USER_NAME);
谢谢,但是我们如何从应用程序本身中找到应用程序id?您是指“在”作业中的应用程序id吗?有
SparkContext.applicationId
。至于“外部”:有ApplicationReport.getApplicationId()
。是的,它来自应用程序本身。根据您在回答中提供的信息,我推断我们可以使用应用程序列表中的应用程序Id详细信息来获取提交的用户名。我正在ApacheSpark和ApacheApex上试用我的POC。因此,我们想知道是否有办法使用Thread或Hadoop_用户名而不是SparkContext检索当前作业id。