0
私はKerberos対応クラスタ(Cloudera)上でSparkジョブを実行していますが、ユーザーのKerberos IDをログに記録したいと考えています。ジョブ。Apache Sparkジョブでの現在のKerberosユーザーの特定
(keytabファイル、jaas.conf
ファイルを使用し、起動スクリプトにkinit
を呼び出すため、これはジョブを起動するローカルLinuxユーザーのIDではないことに注意してください。プリンシパルはkinit
にkeytabと共に渡されますが、実際のSparkジョブ自体にログインすることができれば幸いです。そのため、ジョブを手動で起動しても、実行されたIDは確実にわかります。
いくつかの答えは、次のお勧め:
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
あるので、これは動作しません。