1

我正在尝试从命令提示符运行 hive,它工作得非常好。但是当我尝试使用“hive --service hiveserver”命令运行 hiveserver 时,我得到了以下异常。

Starting Hive Thrift Server
Exception in thread "main" java.lang.ClassNotFoundException: org.apache.hadoop.hive.service.HiveServer
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:278)
    at org.apache.hadoop.util.RunJar.run(RunJar.java:214)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

所以我然后尝试使用命令“hive --service hiveserver2”;我仍然没有找到任何解决方案。

任何人都可以为这个问题提出一个解决方案。

4

2 回答 2

1

可能是另一个进程(另一个 hiveserver)已经在端口 10000 上侦听。

您可以通过以下方式检查吗:netstat -ntulp | grep ':10000' 查看它,如果找到则终止该进程。

否则在另一个端口上启动服务器。

顺便问一下,您使用的是哪个版本?

于 2015-05-20T15:47:18.730 回答
0

hive-service-*.jar当它在 hadoop 类路径中找不到时,我发生了这个错误。只需将 复制hive-service-*.jar到您的文件hadoop lib夹或export classpath. hadoop-env.sh我已经在下面提到了如何添加类路径。

将此行添加到hadoop-env.sh

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/hive/lib/hive-*.jar

我已经提到了配置单元的路径,/usr/local/hive因为我已经在那个位置安装了配置单元。将其更改为指向您的配置单元安装。

于 2015-05-21T05:32:40.607 回答