【已解决】Hive启动后报错:FAILED: LockException [Error 10280]: Error communicating with the metastore

centos7+hadoop2.6.5+hive1.2.2+mysql5.7.26

记录采坑过程!~

[root@master master]# hive

Logging initialized using configuration in jar:file:/opt/bigdata/apache-hive-1.2.2-bin/lib/hive-common-1.2.2.jar!/hive-log4j.properties
hive> show databases;
FAILED: LockException [Error 10280]: Error communicating with the metastore
hive> 

重启hadoop集群,未解决。

尝试运行下面语句,但一直不动了

[root@master master]# hive --service metastore
Starting Hive Metastore Server
...

查看metastore 服务端口:

[root@master master]# ps -ef |grep HiveMetaStore
root      22026  20505  0 16:31 pts/1    00:00:00 grep --color=auto HiveMetaStore
[root@master master]# kill -9 22026
bash: kill: (22026) - 没有那个进程

发现并没有被占用掉它的端口。

查看日志:Hive的日志一般在/tmp/当前用户名/hive.log

[root@master root]# pwd
/tmp/root
[root@master root]# cat hive.log | tail -n 200
2019-06-15 16:52:55,905 INFO  [main]: log.PerfLogger (PerfLogger.java:PerfLogBegin(121)) - <PERFLOG method=Driver.run from=org.apache.hadoop.hive.ql.Driver>
2019-06-15 16:52:55,906 INFO  [main]: log.PerfLogger (PerfLogger.java:PerfLogBegin(121)) - <PERFLOG method=TimeToSubmit from=org.apache.hadoop.hive.ql.Driver>
2019-06-15 16:52:55,906 INFO  [main]: log.PerfLogger (PerfLogger.java:PerfLogBegin(121)) - <PERFLOG method=compile from=org.apache.hadoop.hive.ql.Driver>
2019-06-15 16:52:55,953 INFO  [main]: log.PerfLogger (PerfLogger.java:PerfLogBegin(121)) - <PERFLOG method=parse from=org.apache.hadoop.hive.ql.Driver>
2019-06-15 16:52:55,959 INFO  [main]: parse.ParseDriver (ParseDriver.java:parse(185)) - Parsing command: show databases
2019-06-15 16:52:56,555 INFO  [main]: parse.ParseDriver (ParseDriver.java:parse(209)) - Parse Completed
2019-06-15 16:52:56,556 INFO  [main]: log.PerfLogger (PerfLogger.java:PerfLogEnd(148)) - </PERFLOG method=parse start=1560577975953 end=1560577976556 duration=603 from=org.apache.hadoop.hive.ql.Driver>
2019-06-15 16:52:56,769 ERROR [main]: metastore.RetryingHMSHandler (RetryingHMSHandler.java:invoke(159)) - MetaException(message:Unable to update transaction database com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'hive.txns' doesn't exist
....
....

2019-06-15 16:52:56,789 ERROR [main]: ql.Driver (SessionState.java:printError(960)) - FAILED: LockException [Error 10280]: Error communicating with the metastore
org.apache.hadoop.hive.ql.lockmgr.LockException: Error communicating with the metastore
....
....
Caused by: MetaException(message:Unable to update transaction database com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'hive.txns' doesn't exist
 ....
 ...
2019-06-15 16:52:56,789 INFO  [main]: log.PerfLogger (PerfLogger.java:PerfLogEnd(148)) - </PERFLOG method=compile start=1560577975906 end=1560577976789 duration=883 from=org.apache.hadoop.hive.ql.Driver>
2019-06-15 16:52:56,789 INFO  [main]: log.PerfLogger (PerfLogger.java:PerfLogBegin(121)) - <PERFLOG method=releaseLocks from=org.apache.hadoop.hive.ql.Driver>
2019-06-15 16:52:56,789 INFO  [main]: log.PerfLogger (PerfLogger.java:PerfLogEnd(148)) - </PERFLOG method=releaseLocks start=1560577976789 end=1560577976789 duration=0 from=org.apache.hadoop.hive.ql.Driver>
2019-06-15 16:52:56,796 INFO  [main]: log.PerfLogger (PerfLogger.java:PerfLogBegin(121)) - <PERFLOG method=releaseLocks from=org.apache.hadoop.hive.ql.Driver>
2019-06-15 16:52:56,796 INFO  [main]: log.PerfLogger (PerfLogger.java:PerfLogEnd(148)) - </PERFLOG method=releaseLocks start=1560577976796 end=1560577976796 duration=0 from=org.apache.hadoop.hive.ql.Driver>

查看日志的另一种方法:如何查看更多的错误信息
在默认的日志级别情况下,是不能将DEBUG信息输出,这样一来出现的各种详细的错误信息都是不能数错的。但是我们可以通过以下两种方式修改log4j输出的日志级别,从而利用这些调试日志进行错误定位,具体做法如下:

  $ hive --hiveconf hive.root.logger=DEBUG,console (hive启动时用该命令替代)

或者在${HIVE_HOME}/conf/hive-log4j.properties文件中找到hive.root.logger属性,并将其修改为下面的设置

hive.root.logger=DEBUG,console

查看hive-site.xml配置,发现hive.metastore.warehouse.dir我配置的是本地地址/opt/bigdata/apache-hive-1.2.2-bin/warehouse,速改为HDFS:

hdfs://master:9000/user/hive/warehouse

重启hadoop集群,终端重新hive依然报这个错。

master节点:

[root@master master]# mysql -uroot -p

mysql> create database metastore;
mysql> use metastore;
mysql> source /opt/bigdata/apache-hive-1.2.2-bin/scripts/metastore/upgrade/mysql/hive-schema-1.2.0.mysql.sql;

ERROR: 
Failed to open file 'hive-txn-schema-0.13.0.mysql.sql', error: 2
忽略这个报错

mysql> create user 'hive'@'%' identified by '111111';
mysql> revoke all privileges,grant option from 'hive'@'%';
mysql> grant all privileges on metastore.* to 'hive'@'%' with grant option;
mysql> flush privileges;
mysql> quit;

在mysql下:
show databases;
展示了hive这个数据库。

可以看见hive-site.xml,属性javax.jdo.option.ConnectionURL - jdbc:mysql://myhost/metastore用的是mysql://root/hive其中hive就是metastore。

接着重启hadoop集群,重启hive,一样报这个错。

把安装文件全部删了。----暂未做这个操作。
把mysql下的metastore/hive两个数据库也删了。数据库会在hive初始化时新建,如果没有的话。
重新安装hive----暂未做这个操作。

解决方法:
我的hive-site.xml中有这个属性hive.txn.manager,注释掉或删除即可

<!--
        <property>
                <name>hive.txn.manager</name>
                <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
        </property>
-->

就这么简单~~。。原因是:尴尬

那属性hive.txn.manager是干什么的??是用于Hive支持【事务】的。下方这些属性都是用于支持事务的:

<property>
    <name>hive.support.concurrency</name>
    <value>true</value>
</property>
<property>
    <name>hive.exec.dynamic.partition.mode</name>
    <value>nonstrict</value>
</property>
<property>
    <name>hive.txn.manager</name>
    <value>org.apache.hadoop.hive.ql.lockmgr.DbTxnManager</value>
</property>
<property>
    <name>hive.compactor.initiator.on</name>
    <value>true</value>
</property>
<property>
    <name>hive.compactor.worker.threads</name>
    <value>1</value>
</property>

关于Hive-事务 官方手册

参考这个解决问题,上述方法并未解决本文的问题。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值