如何在远程计算机上将文件放入HDFS时指定用户名

rez*_*eza 31 hadoop username hdfs

我有一个Hadoop集群设置,并在一个通用的默认用户名"user1"下工作.我想将文件放入远程机器中的hadoop,而远程机器不是hadoop集群的一部分.我在远程计算机上配置了hadoop文件

hadoop dfs -put file1 ...
Run Code Online (Sandbox Code Playgroud)

从远程计算机调用,它将file1放在Hadoop集群上.

唯一的问题是我在远程计算机上以"user2"身份登录,并且没有给出我期望的结果.实际上,上述代码只能在远程机器上执行:

hadoop dfs -put file1 /user/user2/testFolder
Run Code Online (Sandbox Code Playgroud)

但是,我真正想要的是能够将文件存储为:

hadoop dfs -put file1 /user/user1/testFolder
Run Code Online (Sandbox Code Playgroud)

如果我尝试运行最后一个代码,hadoop会因访问权限而抛出错误.无论如何我可以在hadoop dfs命令中指定用户名吗?

我正在寻找类似的东西:

hadoop dfs -username user1 file1 /user/user1/testFolder
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 83

如果您使用HADOOP_USER_NAME env变量,您可以告诉HDFS要使用哪个用户名.请注意,这仅适用于您的群集未使用安全功能(例如Kerberos)的情况.例如:

HADOOP_USER_NAME=hdfs hadoop dfs -put ...
Run Code Online (Sandbox Code Playgroud)

  • 是否有一个环境变量来设置 HDFS 组? (2认同)

bio*_*ark 15

这可能对任何人都无关紧要,但我正在使用一个小黑客.

我正在导出.bash_profile中的HADOOP_USER_NAME,以便每次登录时都会设置用户.

只需将以下代码行添加到.bash_profile:

export HADOOP_USER_NAME=<your hdfs user>
Run Code Online (Sandbox Code Playgroud)


Pra*_*ati 11

默认情况下,Hadoop中的身份验证和授权已关闭.根据Hadoop - The Definitive Guide(顺便说一句,好书 - 会建议买它)

Hadoop用于HDFS权限的用户标识是通过在客户端系统上运行whoami命令来确定的.同样,组名称来自正在运行的组的输出.

因此,您可以创建一个新whoami命令,该命令返回所需的用户名并将其适当地放入PATH中,以便在找到Linux附带的实际whoami之前找到创建的whoami.同样,您也可以使用该groups命令.

这是一个黑客攻击,一旦打开身份验证和授权,将无法工作.