gpt4 book ai didi

java - 在运行时更改 Hadoop 用户名不起作用

转载 作者:可可西里 更新时间:2023-11-01 15:52:39 28 4
gpt4 key购买 nike

我写了一个小的 Hadoop 客户端 Java 应用程序,它列出了 HDFS(不安全)中的所有文件和 Hive 中的所有表,以及更多内容。但是,我需要在运行时更改 Hadoop 用户名。

通过 System.setProperty("HADOOP_USER_NAME", "testuser"); 设置名称在我第一次需要这个用户名时工作正常。但是当我想将用户名更改为例如System.setProperty("HADOOP_USER_NAME", "hdfs"); 我得到一个异常(在将 hadoop 用户名设置为 hdfs 之后,如上所示):

org.apache.hadoop.security.AccessControlException: Permission denied: user=testuser, access=READ_EXECUTE, inode="/app-logs/ambari-qa":ambari-qa:hadoop:drwxrwx---

这可能是什么问题?为什么我不能随时通过 HADOOP_USER_NAME 属性更改用户名?

编辑

我可以只使用 UserGroupInformation.setLoginUser(UserGroupInformation.createRemoteUser(username)); 在运行时更改用户还是有一些限制?

最佳答案

因为,您正在使用 JDBC 连接来连接到 HDFS 或 Hive。在您关闭现有连接之前,您无法再从同一个应用程序建立一个到 HDFS/Hive 服务的连接。

关于java - 在运行时更改 Hadoop 用户名不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47413109/

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