我想将 Java Web 应用程序中的 MapReduce 作业提交到远程 Hadoop 集群,但无法指定应为哪个用户提交作业。我想配置和使用应该用于所有 MapReduce 作业的系统用户。
目前,我无法指定任何用户,无论 hadoop 作业在客户端系统当前登录用户的用户名下运行什么。这会导致消息出错
Permission denied: user=alice, access=WRITE, inode="staging":hduser:supergroup:rwxr-xr-x
...其中“爱丽丝”是客户端计算机上的本地登录用户。
我试过了
- 创建实例的各种组合
UserGroupInformation
(代理和普通用户)和 - 使用 设置 Java System 属性
-Duser.name=hduser
,更改USER
envar 和作为硬编码System.setProperty("user.name", "hduser")
调用。
……无济于事。关于 1)我承认不知道应该如何使用这些类。另请注意,更改 Java System 属性显然不是在 Web 应用程序中使用的真正解决方案。
有谁知道您如何指定 Hadoop 使用哪个用户连接到远程系统?
PS/ Hadoop 使用默认配置,这意味着在连接到集群时不使用身份验证,并且在与远程机器通信时不使用 Kerberos。