环境:ambari集群三个节点node104、node105和node106,其中node105上有hiveserver2,并且三个节点均有HIVE CLIENT
注意:“./”指hive安装目录
其中装有hiveserver2的node105节点,由于某种需要向lib目录下上传了某些jar包,并且通过ambari web修改了此项参数的值
做完以上变更后,发现在node104和node106上的hive安装目录下启动./bin/hive,进入hive命令行执行hive sql会出现classNotFoundexception的问题,而node105上启动./bin/hive则不会:
这个错误信息提示很明显, 该类无法被找到,发现无法找到的这个类和我之前修改的配置项的值相同,初步怀疑是./bin/hive在启动时会读取配置文件,当读取到此项配置项时,而lib目录下没有对应的jar包(上文中我提过,我仅在node105上lib目录下上传了某些jar包,而node104和node106上均未上传)
通过vim ./bin/hive查看hive命令,发现其中有两处可以支持我的猜想
解决办法:在node104、node106上启动./bin/hive命令时,通过-hiveconf来规避参数变动带来的影响
hive.exec.post.hooks的默认值为空,所以设置“hive.exec.post.hooks=”
./bin/hive -hiveconf hive.exec.post.hooks=
成功进入执行./bin/hive命令