无法找到或加载主类org.apache.hadoop.hdfs.server.namenode.Namenode

时间:2014-07-13 02:21:51

标签: hadoop

我知道以前曾经问过这个问题,但我无法找到解决办法。我在尝试运行hdfs name node -format时收到以下错误:

  

无法找到或加载主类org.apache.hadoop.hdfs.server.namenode.Namenode

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/

Mapred

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

纱线-site.xml中

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

芯-site.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>

14 个答案:

答案 0 :(得分:12)

For anyone still having trouble, you need to export the HADOOP_PREFIX environment variable.

Add the following line to your ~/.bashrc file:

export HADOOP_PREFIX=/path_to_hadoop_location

# for example:
# export HADOOP_PREFIX=/home/mike/hadoop-2.7.1

Then do . ~/.bashrc in your terminal and try again, this will fix the error.

答案 1 :(得分:12)

感谢dcsesq。

brew在Mac OS 10.9.5上安装了hadoop 2.6.0(特立独行)

将以下env变量添加到.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

运行namenode

hdfs namenode -format
热潮开始了,差不多半天困扰我。

答案 2 :(得分:3)

尝试使用以下命令进行格式化(名称和节点之间没有空格,并用hadoop替换hdfs命令)

hadoop namenode -format

答案 3 :(得分:1)

看起来当您执行hadoop命令时,并非所有类(jar)都包含在您的类路径中。 您的类路径缺少hadoop-hdfs-<version>.jar文件。

答案 4 :(得分:0)

我尝试了上面的建议,但我仍然遇到了同样的错误。在HADOOP_CLASSPATH为我设置的~/.bashrc如下:

export HADOOP_CLASSPATH=$(hadoop classpath):$HADOOP_CLASSPATH

答案 5 :(得分:0)

我也有这个错误。对我来说,问题是在初始解压缩过程中没有提取丢失的文件。

对我有用的是进入.tar.gz文件的位置并使用以下方式再次解压缩:

tar xvzf <file_name>.tar.gz

请注意,这会覆盖所有已保存的文件,因此如果您对任何文件进行了更改,最好在解压缩之前创建Hadoop文件夹的副本。

答案 6 :(得分:0)

我遇到了同样的问题。

重启终端并尝试执行命令。

需要终端重启才能立即生效.bashrc文件中设置的路径变量

答案 7 :(得分:0)

添加

  

导出HADOOP_PREFIX = / path / to / hadoop / installation / directory

在hadoop安装目录的etc/hadoop/hadoop-env.sh文件的末尾。这允许jvm找到类文件。

答案 8 :(得分:0)

通过使用hdfs确保您的which路径正确

which hdfs

答案 9 :(得分:0)

该错误是由于hadoop类路径中缺少hadoop hdfs jar文件所致。 在终端中键入“ hadoop classpath”,然后检查是否存在hdfs jar文件。如果没有,请将下面的行粘贴到.bashrc中,然后保存并获取源代码。

export HADOOP_CLASSPATH=new-classpath:$HADOOP_CLASSPATH

您可以通过将位置添加到现有类路径末尾的hdfs jar文件中来创建新的类路径,并用您自己的位置替换“新类路径”部分。

答案 10 :(得分:0)

对于Windows 7上的Hadoop v3.1.2,我不得不

  1. 按照说明安装Cygwin。

  2. 设置以下环境变量,注意它们是正斜杠(/)而不是反斜杠(\):

    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
    
  3. 将Cygwin和CD重新打开到我的hadoop目录中-必须重新打开才能拾取新的环境变量。随时使用〜/ .bashrc并导出HADOOP_HOME = ...等也可以做到这一点。

  4. 确保准确键入以下内容:

      

    ./bin/hdfs.cmd namenode -format

    必须为.cmd,否则在Windows上将无法使用。

之后,它运行完美。如果仍然遇到问题,请深入研究hdfs.cmd文件并添加一些echo调用以打印出它的运行状态,尤其是在java调用附近以查看其执行的内容。

答案 11 :(得分:0)

可能是类路径问题。

将以下内容添加到您的〜/ .bashrc

 export HADOOP_CLASSPATH=$(cygpath -pw $(hadoop classpath)):$HADOOP_CLASSPATH

答案 12 :(得分:0)

我通过修改.bashrc中的路径解决了这个问题:

export PATH=$HADOOP_HOME/bin:$PATH

答案 13 :(得分:-1)

检查并将HADOOP_PREFIX的值设置为$HADOOP