【发布时间】:2016-05-31 10:00:37
【问题描述】:
我安装了 hadoop-2.7.1 和 hive-2.0.1。
这是我的目录结构:
~/hadoop-2.7.1/ # hadoop directory
~/hadoop-2.7.1/hive/apache-hive-2.0.1-bin # hive directory
我的问题是当我在~/hadoop-2.7.1/hive/apache-hive-2.0.1-bin/bin/中启动./hive时,出现这个错误:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hive/conf/HiveVariableSource
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hive.conf.HiveVariableSource
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 4 more
我刚刚下载了apache-hive-2.0.1-bin.tar.gz 并解压。我没有做任何其他配置。
我使用的是amazon ec2(ubuntu),所有hadoop节点都启动良好。
编辑
这是我的hadoop-env.sh
...(omitted)...
export HADOOP_PID_DIR=${HADOOP_PID_DIR}
export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
# A string representing this instance of hadoop. $USER by default.
export HADOOP_IDENT_STRING=$USER
export JAVA_HOME=/usr/lib/jvm/java-8-oracle
export PATH=${JAVA_HOME}/bin:${PATH}
export HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar:${HADOOP_CLASSPATH}
【问题讨论】:
-
您的类路径可能没有正确设置。您能否尝试将其添加到您的 PATH 并回显 PATH 和 HADOOP_CLASSPATH。
-
@Makubex 我在
[hive-path]/bin中开始蜂巢。但是我应该设置路径吗? -
应该没问题。但我只是想看看你的类路径中有什么。还要更新 hadoop-env.sh 中的 HADOOP_CLASSPATH 以导出 HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar:${HADOOP_CLASSPATH}
-
@Makubex 非常感谢!我刚刚解决了这个问题!在
source hadoop-env.sh之后,我按照以下步骤操作:stackoverflow.com/a/36631358/6388746