hive使用mysql作为元数据库启动报错分析

    hive的元数据库默认是derby,一次只能打开一个会话;若要支持多个用户同时访问,则需要选择一个独立的元数据库,常见的都选择mysql。

我用的是root用户连接mysql,我已经授权所有ip都可以访问,并且flush privilegesle;没有设置密码,所以在配置文件中密码部分我直接什么都没填,但是

一、

1.启动日志报错如下:java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES

2.hive shell控制台报错如下:

     ERROR ql.Driver (SessionState.java:printError(419)) - FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient


控制台报的错是不能初始化元数据库,日志报的错是密码不正确,难道必须设置有密码吗?我在网上搜到的解决办法都是将hive.metastore.schema.verification设置为fasle,还有将mysql 设置set global binlog_format='MIXED';我试了都不行,那我干脆把mysql  root用户设为有密码的,我设为123456 。 启动hive又出现新的错误

二、

1.启动日志报错如下:

  ERROR hive.log (MetaStoreUtils.java:logAndThrowMetaException(960)) - Got exception: java.net.ConnectException Call to localhost/127.0.0.1:9000 failed on connection exception: java.net.ConnectException: 拒绝连接
java.net.ConnectException: Call to localhost/127.0.0.1:9000 failed on connection exception: java.net.ConnectException: 拒绝连接

2..hive shell控制台报错如下:

     ERROR ql.Driver (SessionState.java:printError(419)) - FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient

控制台报的错都一样,不好找原因,所以还是看启动日志,具体问题具体分析,启动日志默认在/tmp/${user.name}/hive.log,9000这个端口是我hdfs的端口,难道运行hive必须先启动hadoop吗?有的人说必须先启动hadoop,有的说不用。我也晕了,反正我启动了hadoop后,再运行hive,进入shell后,输入show tables;成功了
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值