gpt4 book ai didi

hadoop - 为Java webapp内嵌的客户端设置hadoop系统用户

转载 作者:可可西里 更新时间:2023-11-01 14:07:17 26 4
gpt4 key购买 nike

我想将 Java 网络应用程序中的 MapReduce 作业提交到远程 Hadoop 集群,但无法指定应为哪个用户提交作业。我想配置和使用一个应该用于所有 MapReduce 作业的系统用户。

目前我无法指定任何用户,无论 hadoop 作业在客户端系统当前登录用户的用户名下运行什么。这会导致消息错误

Permission denied: user=alice, access=WRITE, inode="staging":hduser:supergroup:rwxr-xr-x

... 其中“alice”是客户端计算机上的本地登录用户。

我试过了

  1. 创建 UserGroupInformation 实例的各种组合(代理和普通用户)和
  2. 使用 -Duser.name=hduser 设置 Java 系统属性,更改 USER envar 并作为硬编码 System.setProperty("user.name ", "hduser") 调用。

...无济于事。关于 1) 我承认不知道应该如何使用这些类。另请注意,更改 Java 系统属性显然不是用于 Web 应用程序的真正解决方案。

有人知道您如何指定 Hadoop 使用哪个用户连接到远程系统吗?

PS/Hadoop 使用默认配置,这意味着在连接到集群时不使用身份验证,并且在与远程计算机通信时不使用 Kerberos。

最佳答案

最后我偶然发现了常量

static final String HADOOP_USER_NAME = "HADOOP_USER_NAME";`

UserGroupInformation 类中

将其设置为环境变量、启动时的 Java 系统属性(使用 -D)或以编程方式使用 System.setProperty("HADOOP_USER_NAME", "hduser"); 使 Hadoop 使用您想要连接到远程 Hadoop 集群的任何用户名。

关于hadoop - 为Java webapp内嵌的客户端设置hadoop系统用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11041253/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com