执行如下命令启动hive服务:./bin/hive --service hiveserver,报如下错误:
Starting Hive Thrift Server
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.thrift.server.TThreadPoolServer.<init>(Lorg/apache/thrift/server/TThreadPoolServer$Args;)V
at org.apache.hadoop.hive.service.HiveServer.main(HiveServer.java:676)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.util.RunJar.main(RunJar.java:197)
出现该问题的原因是thrift版本不兼容,解决办法如下:
1)确保hadoop/lib里的库文件libfb303*.jar及libthrift*.jar的版本号与hive/lib里的一致,如果不需要可以直接删除hadoop/lib里的thrift库文件
2)如果上述处理后,仍然报错,可能是你在hadoop里安装了hue库,hue也使用了thrift库,如果hue要求的thrift库版本与hive/lib了的thrift库版本不一致也会出现该问题,最简单的解决办法是删除hadoop/lib里的hui*.jar库文件,或则采用支持与hive使用的thrift相同版本的hue即可
如果还是无法解决问题,就需要进一步查找是否还有其他模块采用了不同版本的thrift了。
【转自】http://blog.sina.com.cn/s/blog_8df8cc6101017b5w.html
原来是hue与hadoop配置的安装包与hive12的包thrift冲突导致,将hadoop的lib目录下hue-plugins-1.2.0-cdh3u5.jar删除即可解决。