我正在启用kerberos的集群(cloudera)上运行spark作业,并且希望能够为任何给定的作业运行记录用户的kerberos标识。
(请注意,这不是启动作业的本地linux用户的标识,因为我们使用keytab文件, jaas.conf
文件,并呼叫 kinit
在启动脚本中。我们可以在启动脚本中记录一个标识,因为我们知道传递给 kinit
与keytab一起使用,但最好能够在实际的spark作业本身中进行日志记录,这样即使手动启动作业,我们也可以可靠地知道它运行的身份)。
一些答案表明:
import java.security.{AccessController,Principal}
import javax.security.auth.Subject
val acc = AccessController.getContext
val sub = Subject.getSubject(acc)
val principals = sub.getPrincipals
但是他回来了 sub
是 null
,所以这不起作用。
1条答案
按热度按时间ogq8wdun1#
你得看看
UserGroupInformation
班级。要获取登录用户,可以使用: