无法找到或加载主类 org.apache.hadoop.hdfs.server.namenode.Namenode
Posted
技术标签:
【中文标题】无法找到或加载主类 org.apache.hadoop.hdfs.server.namenode.Namenode【英文标题】:Could not find or load main class org.apache.hadoop.hdfs.server.namenode.Namenode 【发布时间】:2014-07-13 02:21:51 【问题描述】:我知道以前有人问过这个问题,但我想不出解决方案。当我尝试运行 hdfs name node -format
时出现以下错误:
I followed the instructions from this website to install on my centos machine. 唯一的区别是我使用 root 安装而不是链接中提到的 hadoopuser。
bashrc
# User specific aliases and functions
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/
export HADOOP_INSTALL=/usr/local/hadoop
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 PATH=$PATH:$HADOOP_INSTALL/sbin
export PATH=$PATH:$HADOOP_INSTALL/bin
hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64/
映射
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
纱线站点.xml
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
核心站点.xml
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoopspace/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoopspace/hdfs/datanode</value>
</property>
【问题讨论】:
【参考方案1】:对于仍有问题的人,您需要导出HADOOP_PREFIX
环境变量。
将以下行添加到您的 ~/.bashrc
文件中:
export HADOOP_PREFIX=/path_to_hadoop_location
# for example:
# export HADOOP_PREFIX=/home/mike/hadoop-2.7.1
然后在您的终端中执行. ~/.bashrc
并重试,这将修复错误。
【讨论】:
还有其他可能的原因。这并没有解决我的问题,也是同样的错误,hadoop-2.6.3。 @KayV 您应该提供更多详细信息,例如:版本、本地安装目录、操作系统等。【参考方案2】:感谢 dcsesq。
brew
在 Mac OS 10.9.5 上安装了 hadoop 2.6.0(特立独行)
将以下环境变量添加到 .profile ~/.bash_profile
export HADOOP_HOME=/usr/local/Cellar/hadoop/2.6.0
export HADOOP_PREFIX=$HADOOP_HOME/libexec
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
export HADOOP_COMMON_HOME=$HADOOP_PREFIX
export HADOOP_HDFS_HOME=$HADOOP_PREFIX
export YARN_HOME=$HADOOP_PREFIX
获取 .profile 文件
source ~/.bash_profile
运行名称节点
hdfs namenode -format
热潮开始了,困扰了我将近半天。
【讨论】:
这是一个答案,还是一个评论/回复?如果是后者,我建议将代码部分粘贴到要点中,并使用指向此类要点的链接进行评论。否则,你需要格式化你的代码(在编辑器中点击
)
烦我一整天!感谢您提供环境变量!
无法解决问题。安装 cdh5 后,我收到错误。安装CDH5到系统后有什么问题吗【参考方案3】:
尝试使用以下命令进行格式化(名称和节点之间没有空格并用hadoop替换hdfs命令)
hadoop namenode -format
【讨论】:
我试过没有空间,得到了同样的错误。我错过了什么吗?【参考方案4】:看起来当您执行 hadoop 命令时,并非所有类(jar)都包含在您的类路径中。
您的类路径缺少 hadoop-hdfs-<version>.jar
文件。
【讨论】:
【参考方案5】:我遇到了同样的问题。
重启终端并尝试执行命令。
需要重启终端才能使 .bashrc 文件中设置的路径变量立即生效
【讨论】:
【参考方案6】:我尝试了上面的建议,但仍然遇到同样的错误。在~/.bashrc
中设置HADOOP_CLASSPATH
对我有用:
export HADOOP_CLASSPATH=$(hadoop classpath):$HADOOP_CLASSPATH
【讨论】:
【参考方案7】:我也有这个错误。对我来说,问题是在初始解压缩过程中缺少未提取的文件。
对我有用的是进入 .tar.gz 文件的位置并使用以下命令再次解压缩:
tar xvzf <file_name>.tar.gz
请注意,这会覆盖您保存的所有文件,因此如果您对任何文件进行了更改,最好在解压缩之前创建 Hadoop 文件夹的副本。
【讨论】:
【参考方案8】:添加
导出 HADOOP_PREFIX=/path/to/hadoop/installation/directory
在hadoop安装目录中etc/hadoop/hadoop-env.sh
文件的末尾。这允许 jvm 定位类文件。
【讨论】:
【参考方案9】:使用which
确保您的hdfs
路径正确
which hdfs
【讨论】:
【参考方案10】:错误是由于在 hadoop 类路径中缺少 hadoop hdfs jar 文件。 在终端中输入“hadoop classpath”并检查 hdfs jar 文件是否存在。如果没有将下面的行粘贴到 .bashrc 中并保存并获取它。
export HADOOP_CLASSPATH=new-classpath:$HADOOP_CLASSPATH
您可以通过将位置添加到现有类路径末尾的 hdfs jar 文件并用您自己的替换部分“new-classpath”来创建新的类路径。
【讨论】:
【参考方案11】:对于 Windows 7 上的 Hadoop v3.1.2,我不得不
安装 Cygwin(按照说明)。
设置以下环境变量,注意那些是正斜杠(/)而不是反斜杠(\):
HADOOP_HOME=D:/.../hadoop-3.1.2 JAVA_HOME=D:/.../java-1.8.0-openjdk-1.8.0.201-2.b09.redhat.windows.x86_64
重新打开 Cygwin 和 CD 到我的 hadoop 目录 -- 必须重新打开以获取新的环境变量。也可以随意使用 ~/.bashrc 和 export HADOOP_HOME=... 等来执行此操作。
确保您准确输入以下内容:
./bin/hdfs.cmd namenode -format
它必须是 .cmd 否则它将无法在 Windows 上运行。
之后它就完美运行了。如果您仍然遇到问题,请深入研究 hdfs.cmd 文件并添加一些 echo 调用以打印出它正在运行的内容,尤其是在 java 调用附近以查看它正在执行的确切内容。
【讨论】:
【参考方案12】:可能是类路径问题。
将以下内容添加到您的 ~/.bashrc
export HADOOP_CLASSPATH=$(cygpath -pw $(hadoop classpath)):$HADOOP_CLASSPATH
【讨论】:
【参考方案13】:我通过修改.bashrc中的路径解决了这个问题:
export PATH=$HADOOP_HOME/bin:$PATH
【讨论】:
【参考方案14】:检查HADOOP_PREFIX
的值并将其设置为$HADOOP
【讨论】:
以上是关于无法找到或加载主类 org.apache.hadoop.hdfs.server.namenode.Namenode的主要内容,如果未能解决你的问题,请参考以下文章