spring - 使用 ugi 覆盖当前的 hadoop kerberos 用户
Posted
技术标签:
【中文标题】spring - 使用 ugi 覆盖当前的 hadoop kerberos 用户【英文标题】:spring - override current hadoop kerberos user using ugi 【发布时间】:2013-11-19 23:11:14 【问题描述】:我的应用程序在 webserver 上运行,但 weberserver 用户没有 kerberos 帐户 .. 所以在启动 spring hadoop 配置时它会失败。我确实有另一个带有 keytab 文件的 kerberos 用户,我可以使用该文件登录,但在我有机会这样做之前,spring 已经尝试使用当前 linux 用户设置配置并失败。这就是我使用其他用户的方式
UserGroupInformation.loginUserFromKeytab(userId, userKeyTabFilePath);
目前我从 WebApplicationInitializer.onStartup 方法调用它,但它仍然无法为 spring hadoop 东西(可能是 FileSystem)设置配置,因为它不使用我在这里登录的用户。如何覆盖 spring 设置 hadoop 配置过程以将此用户提供为登录用户而不是当前 linux 用户。
任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:用 kerberos 配置 hadoop 真的很痛苦。解决此问题的最简单方法是使用 jaas.conf 运行您的应用程序,该 jaas.conf 除了使用 UGI 外,还具有必要的凭据和密钥表。
这是一个示例配置:
Client
com.sun.security.auth.module.Krb5LoginModule required
useKeyTab=true
keyTab="/etc/tomcat/<keytab>"
storeKey=true
useTicketCache=false
principal="<user>@<host>";
;
通过
-Djava.security.auth.login.config=<path to jaas.conf>
vm 参数到您的 Web 应用程序容器。
我假设你的 spring 配置已经从你的 hadoop 加载了 *-site.xml 文件。这也是必要的。
【讨论】:
以上是关于spring - 使用 ugi 覆盖当前的 hadoop kerberos 用户的主要内容,如果未能解决你的问题,请参考以下文章