我知道这个问题可能已经回答了,好吧,我的问题仍然存在:
我使用CentOS7在vmware上为hadoop创建了一个vm,我可以启动namenode和datanode,但是,当我尝试使用以下命令查看hdfs文件时:
hdfs dfs -ls
它会抛出以下错误:
Could not find or load main class org.apache.hadoop.fs.FsShell
我的谷歌搜索建议这可能与bash中的hadoop变量设置有关,这是我的设置:
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
export HADOOP_HOME=/opt/hadoop/hadoop-2.7.2
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_PREFIX=$HADOOP_HOME
export HIVE_HOME=/opt/hadoop/hive
export PATH=$HIVE_HOME/bin:$PATH
export ANT_HOME=/usr/local/apache-ant-1.9.7
export PATH=${PATH}:${JAVA_HOME}/bin
export PIG_HOME=/opt/hadoop/pig-0.15.0
export PIG_HADOOP_VERSION=0.15.0
export PIG_CLASSPATH=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$PIG_HOME/bin
export PATH=$PATH:$HADOOP_HOME/bin
export HADOOP_USER_CLASSPATH_FIRST=true
export SQOOP_HOME=/usr/lib/sqoop
export PATH=$PATH:$SQOOP_HOME/bin
export HADOOP_CLASSPATH=$HADOOP_HOME/share/hadoop/common/
export PATH=$PATH:$HADOOP_CLASSPATH
# Uncomment the following line if you don't like systemctl's auto-paging feature
:
# export SYSTEMD_PAGER=
# User specific aliases and functions
我检查了我的hadoop文件夹:/opt/hadoop/hadoop-2.7.2/share/hadoop/common,这里是列表:
我正在使用root帐户进行此练习,任何人都可以帮助找出问题的原因并解决它吗?非常感谢你。
答案 0 :(得分:2)
当您有多个hadoop实例时,通常会发生这种情况,检查哪个hadoop并查看它是否指向您已安装的版本。
如果它指向/ usr / bin / hadoop而不是/ your-path / hadoop,则可以将/ usr / bin / hadoop指向(使用符号链接)
答案 1 :(得分:1)
正如Filmon Gebreyesus所指出的,当你有多个hadoop实例时会发生这种情况。首先,检查$ PATH中的内容。应该有hadoop / bin的路径。
如果仍无效,请运行 where hdfs 。检查输出。如果有一个不应该存在的hdfs,请删除/移动它。
答案 2 :(得分:0)
尝试取消设置$ HADOOP_COMMON_HOME
取消设置HADOOP_COMMON_HOME