运行 hadoop 命令作为 sudo
run hadoop command as sudo
我正在尝试 运行 "sudo hadoop namenode -format"。我需要 运行 它作为 sudo,所以我不能改变它。但是这样做会出现错误:
sudo: hadoop: command not found
我在/etc/environment中输入了变量:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/cloud-user/hadoop-2.2.0/bin:/home/cloud-user/hadoop-2.2.0/sbin"
JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64"
HADOOP_INSTALL="/home/cloud-user/hadoop-2.2.0"
HADOOP_MAPRED_HOME="/home/cloud-user/hadoop-2.2.0"
HADOOP_COMMON_HOME="/home/cloud-user/hadoop-2.2.0"
HADOOP_HDFS_HOME="/home/cloud-user/hadoop-2.2.0"
YARN_HOME="/home/cloud-user/hadoop-2.2.0"
HADOOP_COMMON_LIB_NATIVE_DIR="/home/cloud-user/hadoop-2.2.0/lib/native"
然后我在 /etc/profile.d 下创建了一个名为 myenvvars.sh 的文件,内容为:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/home/cloud-user/hadoop-2.2.0
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS=-Djava.library.path=/lib
最后,我在/etc/bash.bashrc.
中写了同样的东西
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/home/cloud-user/hadoop-2.2.0
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS=-Djava.library.path=/lib
None 其中有效。请帮忙!!
问题是给定的 sudo 命令会让 hadoop 命令以 root 用户配置文件执行,看来你的用户配置文件允许以 root 用户身份执行 sudo。
希望您已经在用户登录的配置文件中进行了环境变量设置,一旦您使用 sudo,根用户配置文件将没有任何机会了解您在配置文件中所做的设置。
因此,在使用 sudo hadoop 命令之前,也必须在 root 用户配置文件中进行相同的设置。
否则,您可以通过 sudo 命令使用 hadoop 二进制文件的绝对路径。
您已经为自己设置了环境变量。默认情况下,当你 运行 sudo 时,它不会使用它们,以避免安全暴露你的一些不安全的东西被 root 用户使用。根据 http://www.sudo.ws/sudo.man.html,如果您使用 -E
选项,它将在 运行 命令之前复制您的环境变量设置。您需要确保这不会导致安全妥协。
我正在尝试 运行 "sudo hadoop namenode -format"。我需要 运行 它作为 sudo,所以我不能改变它。但是这样做会出现错误:
sudo: hadoop: command not found
我在/etc/environment中输入了变量:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/cloud-user/hadoop-2.2.0/bin:/home/cloud-user/hadoop-2.2.0/sbin"
JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64"
HADOOP_INSTALL="/home/cloud-user/hadoop-2.2.0"
HADOOP_MAPRED_HOME="/home/cloud-user/hadoop-2.2.0"
HADOOP_COMMON_HOME="/home/cloud-user/hadoop-2.2.0"
HADOOP_HDFS_HOME="/home/cloud-user/hadoop-2.2.0"
YARN_HOME="/home/cloud-user/hadoop-2.2.0"
HADOOP_COMMON_LIB_NATIVE_DIR="/home/cloud-user/hadoop-2.2.0/lib/native"
然后我在 /etc/profile.d 下创建了一个名为 myenvvars.sh 的文件,内容为:
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/home/cloud-user/hadoop-2.2.0
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS=-Djava.library.path=/lib
最后,我在/etc/bash.bashrc.
中写了同样的东西export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HADOOP_INSTALL=/home/cloud-user/hadoop-2.2.0
export PATH=$PATH:$HADOOP_INSTALL/bin
export PATH=$PATH:$HADOOP_INSTALL/sbin
export HADOOP_MAPRED_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_HOME=$HADOOP_INSTALL
export HADOOP_HDFS_HOME=$HADOOP_INSTALL
export YARN_HOME=$HADOOP_INSTALL
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_INSTALL/lib/native
export HADOOP_OPTS=-Djava.library.path=/lib
None 其中有效。请帮忙!!
问题是给定的 sudo 命令会让 hadoop 命令以 root 用户配置文件执行,看来你的用户配置文件允许以 root 用户身份执行 sudo。
希望您已经在用户登录的配置文件中进行了环境变量设置,一旦您使用 sudo,根用户配置文件将没有任何机会了解您在配置文件中所做的设置。
因此,在使用 sudo hadoop 命令之前,也必须在 root 用户配置文件中进行相同的设置。
否则,您可以通过 sudo 命令使用 hadoop 二进制文件的绝对路径。
您已经为自己设置了环境变量。默认情况下,当你 运行 sudo 时,它不会使用它们,以避免安全暴露你的一些不安全的东西被 root 用户使用。根据 http://www.sudo.ws/sudo.man.html,如果您使用 -E
选项,它将在 运行 命令之前复制您的环境变量设置。您需要确保这不会导致安全妥协。