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)
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
命令.
这是一个黑客攻击,一旦打开身份验证和授权,将无法工作.