需要" runuser hdfs -s / bin / bash / bin / bash"在Hadoop中

时间:2014-12-02 13:36:30

标签: hadoop mapreduce hdfs

我是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

1 个答案:

答案 0 :(得分:2)

这有点让人困惑,但让我试着详细说明这个命令在做什么:

runuser hdfs -s /bin/bash /bin/bash -c "hadoop fs -mkdir /user/<name>"

runuser通常用于使用指定用户执行命令。你也可以使用susudo来实现同样的目标,这个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>