Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

启动hive 后,查询 show databases; 报错如下:
在这里插入图片描述
这个异常信息的原因是:
Hive的metadata服务未开启导致的。

解决办法:

进入到Hive的bin目录下,键入命令:

 ./hive --service metastore &

在这里插入图片描述
hive的metastore是干嘛的?作用是什么?

Metastore作用:

客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,只需要连接metastore 服务即可。

metastore的两种方式

配置metastore服务端以及metastore数据库主要有内嵌、远程两种方式。

1. 内嵌方式
hive使用derby作为内嵌的metastore数据库,主要用于测试,但是在同一时间,它只允许一个进程连接metastore数据库。
注意确认数据库能被执行查询的机器访问到,jdbc库放到hive客户端的classpath下。

2. 远程方式
远程metastore服务端和客户端之间使用Thrift协议通信。执行hive --service metastore 启动Thrift服务端。
(所以在初始化之后没有启动Thrift服务端,直接执行SQL语句就会报错)

如果使用mysql,需要在启动hive客户端和HiveMetastore服务端之前把jar包放到HIVE_HOME/lib目录。
远程metastore服务端和客户端都需要设置hive.metastore.warehouse.dir参数为HDFS路径,此外服务端需要设置ConnectionURL等参数,客户端需要设置hive.metastore.uris参数。

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值