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 用户的主要内容,如果未能解决你的问题,请参考以下文章

ugi0tdqk并发专题tiMer的缺陷用Schedu

UGI,没有理想的区块链项目

查看当前 Spring (Boot) 属性

Spring Boot 类路径配置文件覆盖外部 application.properties

币圈人在新形势下要赚钱必读

区块链投资的第一标准