我正在尝试从命令提示符运行配置单元它正常工作。但是当我尝试使用“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”;我仍然没有找到任何解决方案。
任何人都可以为这个问题提出解决方案。
答案 0 :(得分:1)
可能是另一个已经侦听端口10000的进程(另一个hiveserver)。
你可以通过以下方式检查: netstat -ntulp | grep':10000'看到它,如果发现然后杀死这个过程。否则在另一个端口上启动服务器。
顺便提一下你使用哪个版本?
答案 1 :(得分:0)
当我在hadoop类路径中找不到hive-service-*.jar
时,我发生了这个错误。只需将hive-service-*.jar
复制到hadoop lib
文件夹或export classpath
中的hadoop-env.sh
即可。我已经提到了如何在下面添加classpath。
在hadoop-env.sh
中添加此行:
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/hive/lib/hive-*.jar
我已经提到了hive的路径为/usr/local/hive
,因为我在该位置安装了hive。将其更改为指向您的蜂巢安装。