赞
踩
一、现象
几乎全部SQL语句都不能查,卡死在那里,过很久之后可能会报
FAILED: Error in acquiring locks: Error communicating with the metastore
但是查看后台hive的日志,没有任何异常
SQL语句比如:
- select 1;
-
- show tables;
二、定位原因
1、重启hiveserver2,MetaStore等服务都没有效果
2、考虑是hive元数据的问题
查看hive元数据表的使用情况
- show OPEN TABLES where In_use > 0;
-
- show full processlist;
发现多个以下语句:
select nl_next from NEXT_LOCK_ID for update
猜测这些表被锁死,导致。
查看数据:
select nl_next from NEXT_LOCK_ID
发现有2条一样的数据
问题可能就在这里;想办法删除一条;
三、解决路径
NEXT_LOCK_ID 始终有锁,无法删除数据。
1、停止hiveserver2,MetaStore 服务;发现还有锁
2、查看hive应用进程 ps -ef|grep hive,全部杀掉,锁释放
3、然后删除NEXT_LOCK_ID一条记录
4、重启hiveserver2,MetaStore
5、查询hive 恢复正常
四、总结
原因可能是多个进程同时操作,导致hive事务上的bug,插进了2条一样的数据,导致元数据库被锁
以下几个hive元数据表跟hive的事务有关:
NEXT_LOCK_ID
next_compaction_queue_id
next_txn_id
以上三个表出问题就有可能会报以下错误: error in acquiring locks: error communicating with the metastore.
hive 卡死的原因很多,这个是其中之一,基本都hive metastore会有一些关系,大家可以按这个方向去定位原因,就能更快速寻找到问题的根源。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。