【问题标题】:Hadoop 2.7.2 - Error: Could not find or load main class org.apache.hadoop.hdfs.server.namenode.NameNodeHadoop 2.7.2 - 错误:无法找到或加载主类 org.apache.hadoop.hdfs.server.namenode.NameNode
【发布时间】:2016-01-30 19:21:22
【问题描述】:

我是新手,我正在尝试找到解决此问题的方法。 为了在 Ubuntu 15.10 上设置 Hadoop 2.7.2,我遵循了这个教程

http://idroot.net/tutorials/how-to-install-apache-hadoop-on-ubuntu-14-04/

当我启动“hdfs namenode format”时,我继续收到此错误 错误:无法找到或加载主类 org.apache.hadoop.hdfs.server.namenode.NameNode

这是 bashrc 内容

export JAVA_HOME=/usr/lib/jvm/java-8-oracle

export HADOOP_INSTALL=/usr/local/hadoop

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=$HADOOP_INSTALL/lib"

谁能帮我解决这个(我认为是愚蠢的)问题?

非常感谢 卡玛

【问题讨论】:

标签: hadoop ubuntu-15.10 hadoop-2.7.2


【解决方案1】:

我也有这个错误。对我来说,这只是因为 /share/hadoop/yarn/ 文件夹中的某些文件丢失,这是由于 hadoop.tar.gz 下载不完整造成的,仍然可以通过命令行进行抽象。可以帮助你,干杯。

【讨论】:

    【解决方案2】:

    首先确保目录namenodedatanode 已经存在于hdfs-site.xml 文件中指定的位置。您可以使用命令mkdir 来创建它们。

    然后尝试使用格式化namenode

    hdfs namenode -format
    

    /usr/local/hadoop/bin/hdfs namenode -format
    

    请注意连字符。


    我对 hadoop 的 bashrc 配置:

    #HADOOP VARIABLES START
    export HADOOP_HOME=/usr/local/hadoop
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export YARN_HOME=$HADOOP_HOME
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
    export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar
    #HADOOP VARIABLES END
    

    【讨论】:

    • 嗨!我检查了目录,但仍然收到此错误。我正在使用 oracle JRE 而不是特定的(openjdk)JDK。这能负责吗?我的观点是,这个问题与一些未找到的类有关,因此 hdfs 命令无法找到所需的类
    • 尝试在 bashrc 文件中将所有出现的“HADOOP_INSTALL”更改为“HADOOP_HOME”或“HADOOP_PREFIX”。
    • IMO,只要您不自己制作任何应用程序,JRE 应该可以正常工作。
    • @RobertoG。 2.7.2,这是最新版本。
    【解决方案3】:

    使用灰烬脚本解决了问题。主要区别在于使用 open jdk 而不是 oracle jre。

    感谢您的帮助!

    【讨论】:

      【解决方案4】:

      此问题背后的一个原因可能是用户定义的HDFS_DIR 环境变量。这是由脚本提取的,例如libexec/hadoop-functions.sh 中的以下行:

      HDFS_DIR=${HDFS_DIR:-"share/hadoop/hdfs"}
      ...
      if [[ -z "${HADOOP_HDFS_HOME}" ]] &&
         [[ -d "${HADOOP_HOME}/${HDFS_DIR}" ]]; then
        export HADOOP_HDFS_HOME="${HADOOP_HOME}"
      fi
      

      解决办法是避免定义环境变量HDFS_DIR

      就我而言,使用sudo 有所帮助,但原因是错误的:权限没有问题,但环境变量有问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-12
        相关资源
        最近更新 更多