hive 2.3.9 解压启动hive报错 & 正常启动之后无法创建数据库
//20220110
本篇用于记录hadoop2.3.9解压之后无法启动 & 启动之后无法建表的问题
问题描述
问题1
-
在官网下载hive之后,拷贝到本地,解压,进入bin目录用hive启动,此时报出如下错误
![]()
-
出现原因:hadoop和hive 对应的guava文件版本不一致,hadoop guava文件在hadoop安装目录share/hadoop/common/lib路径下;hive此文件在hive解压目录lib目录下,如图二,两个路径下均保持高版本文件即可
![]()
![图2]()
-
替换文件后可以进入hive shell界面,但是不能执行语句,会报错
![]()
![]()
-
出现原因:hive没有初始化,需要手动指定hive将要使用的数据库,由于本次使用的是hive内嵌式数据库“derby”,所以执行如下命令
schematool -dbType derby -initSchema # derby为需要使用的数据库,如果配置了mysql并需要使用它,则把derby换成mysql -
如果执行初始化命令报出如下错误,则表示第一次启动hive生成的metastore文件没有删掉,需要删除自动生成的文件,执行成功的截图如下图二
![图1]()
![图2]()
问题2
-
此时,再次启动hive是可以成功执行hql语句的,界面如下图,但是如果执行如“创建数据库”、“创建表”之类的语句,可能会报出“permission deny”错误,如下图二
![]()
![图2]()
-
出现原因:初始化内嵌式数据库文件metastore时,使用的用户和当前用户不一致,此处截图是root初始化,hadoop用户登录,然后dfs上只有hadoop用户对文件有使用权限,所以在root用户下执行语句,会报错,而在hadoop用户下执行语句,会卡住,因为数据库从属于root,hadoop用户没有权限
-
如何解决:此时将数据库删掉,重新执行上面的流程即可;或者将文件夹权限改成777(不推荐)
-
成功执行语句截图如下:
![]()
写在最后:下次执行任务还是使用同一个用户,不然不同组件用户不同的话,可能会有非常多的问题










浙公网安备 33010602011771号