我是hadoop
新手,正在按照此链接将其安装在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
这有点令人困惑,但让我尝试详细说明该命令在做什么:
runuser hdfs -s /bin/bash /bin/bash -c "hadoop fs -mkdir /user/<name>"
runuser
通常用于使用指定用户执行命令。您也可以使用 su
和 sudo
来实现相同的目标,本文解释了它们之间的区别。 -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>