hive12启动报错org.apache.thrift.server.TThreadPoolServer.,Lorg/apache/thrift/server/TThreadPoolServer$Args;

执行如下命令启动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删除即可解决。