我是hadoop
的新用户,并按照此link将其安装在Fedora 20
中。本文中有一个命令:
runuser hdfs -s /bin/bash /bin/bash -c "hadoop fs -mkdir /user/<name>"
在命令的这一部分中,我们在HDFS中创建一个目录:
"hadoop fs -mkdir /user/<name>"
但我无法理解上述命令的这一部分的用途/含义:
runuser hdfs -s /bin/bash /bin/bash
请告诉我这个命令的确切用法/含义:
runuser hdfs -s /bin/bash /bin/bash
答案 0 :(得分:2)
这有点让人困惑,但让我试着详细说明这个命令在做什么:
runuser hdfs -s /bin/bash /bin/bash -c "hadoop fs -mkdir /user/<name>"
runuser
通常用于使用指定用户执行命令。你也可以使用su
和sudo
来实现同样的目标,这个article解释了它们之间的差异。 -s
runuser
选项指定用于执行指定命令的shell。
因此,使用上面的命令,您尝试执行命令:
/bin/bash -c "hadoop fs -mkdir /user/<name>"
切换到hdfs
用户(谁是HDFS的超级用户)并使用bash
shell执行此操作(-s /bin/bash
)。命令(/bin/bash -c "hadoop fs ..."
)本身强制使用/bin/bash
并使用-c
选项将命令作为字符串传递。
替代方式:
你也可以通过这样做来实现同样的目标:
su - hdfs -c "hadoop fs -mkdir /user/<name>"
甚至这个(我一直都在使用):
sudo -u hdfs hadoop fs -mkdir /user/<name>