无法找到或加载主类org.apache.hadoop.fs.FsShell

时间:2016-07-10 15:15:13

标签: bash hadoop

我知道这个问题可能已经回答了,好吧,我的问题仍然存在:

我使用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,这里是列表: enter image description here

我正在使用root帐户进行此练习,任何人都可以帮助找出问题的原因并解决它吗?非常感谢你。

3 个答案:

答案 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