Hadoop 中"runuser hdfs -s /bin/bash /bin/bash"的需求



我是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通常用于使用指定用户执行命令。您也可以使用 susudo 来实现相同的目标,本文解释了它们之间的区别。 -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>

相关内容

  • 没有找到相关文章

最新更新