【问题标题】:Hive table locks蜂巢表锁
【发布时间】:2018-04-20 17:51:25
【问题描述】:

我有通过文件中的查询来查询的配置单元表。 我调用了一个 oozie 工作流,它为提到的文件调用了一个配置单元操作。 这项工作没有成功,我终止了工作流程。

但表在 Hive CLI 上仍显示为锁定。我正在寻找一个可以从 Hive 表中释放锁的命令/进程。

【问题讨论】:

  • "作业没有成功,我终止了工作流。"您用来执行此操作的确切程序是什么?
  • 我使用 oozie UI 按钮“Kill”杀死了它

标签: hadoop hive


【解决方案1】:

我们可以使用下面的查询来释放锁

set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DummyTxnManager; 
unlock table tablename;

【讨论】:

  • 我试过上面的命令,但得到错误'当前事务管理器不支持显式锁定请求'。我正在使用 Hive 0.14.0.2.2.8.0-3150。
【解决方案2】:

如果你使用mysql作为metastore,它会将表锁信息存储在表HIVE_LOCKS中,截断它。

mysql> select * from HIVE_LOCKS;
Empty set (0.00 sec)
mysql>

【讨论】:

  • 这对我有用。通过查看 HIVE_AGENT_INFO 列中的配置单元查询 ID 并与当前运行的查询进行比较,您可以识别过时的锁,例如。很多天前的锁。然后,您可以只删除这些而不是截断整个表。从 HIVE_LOCKS 中选择 HL_LOCK_EXT_ID、HL_LOCK_INT_ID、HL_DB、HL_TABLE、HL_AGENT_INFO;从 HIVE_LOCKS 中删除,其中 HL_LOCK_EXT_ID 在 (123,456);
【解决方案3】:

检查表上的锁(在 Hive 中运行)-

显示锁 tablename 扩展;

要查找长时间运行的查询的活动 ID - (您需要从上面的查询中传递用户,并且可以使用下面查询中的应用程序名称验证第一个查询的代理信息)。在蜂巢外奔跑

纱线应用-list | grep 用户

杀死活动ID -

yarn application -kill activityid

【讨论】:

  • yarn applicatoin -list | grep userid 不返回任何活动。但是show locks 列出了很多表。
  • 哦。但我尝试了正确的拼写,同样的结果
猜你喜欢
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 2015-05-15
相关资源
最近更新 更多