Hive ACID表锁死锁永不过期

时间:2019-07-08 07:42:14

标签: hive acid

猜测在蜂巢中启用ACID是一条孤独的路线。我发现很难找到解决方案。

此查询也与我下面的查询类似。

Hive table does not respond to select query. ACID enabled

错误: FAILED: Error in acquiring locks: Lock acquisition for LockRequest(component:[ LockComponent(type:SHARED_READ, level:TABLE, dbname:db1, tablename:table1, operationType:INSERT, isAcid:true), LockComponent(type:SHARED_READ, level:TABLE, dbname:db1, tablename:table2, operationType:SELECT), LockComponent(type:SHARED_READ, level:TABLE, dbname:db1, tablename:table3, operationType:SELECT)], txnid:10140, user:userid, hostname:host.xyz.com, agentInfo:userid_20190707082237_ff87ff1b-bcc2-466d-b5db-e5781ff1f2ef) timed out after 5503292ms. LockResponse(lockid:22084, state:WAITING)

有些锁存在了几个月。即使在重新创建表之后,这些锁仍然存在。这可能是导致错误的原因。 但是我不确定。因为有时相同的失败查询也会起作用。令人困惑。

我使用R中的系统命令来运行以下配置单元查询。因此,对于下面的每个查询,也会执行

acid <- "set hive.support.concurrency=true;
    set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
    set hive.enforce.bucketing=true;
    set hive.exec.dynamic.partition.mode=nostrict;
    set hive.compactor.initiator.on=true;
    set hive.compactor.worker.threads=1;"

hql <- paste(acid,hql)
response <- system(paste0("hive -S -e ","\"", hql,"\""," 2>&1"), wait = TRUE,intern=TRUE)

对于像select count(*)这样的少数查询,我使用tez,因为查询运行没有问题,并且运行速度更快。并非所有查询都可以使用tez,因为它还会带来其他错误。

某些Drop table查询给出了锁定时间。但是相同的Drop table可以很好地工作而不启用ACID属性。

我想我可以正确解释。我知道这是多个问题。但是主要问题是由于锁定而无法执行查询。而且也无法杀死锁。

蜂巢版

Hive 2.1.1-mapr-1803 Subversion git://9281ba475c39/root/opensource/mapr-hive-2.1/dl/mapr-hive-2.1 -r ef09bc4b4286a3f53947196a79949620b006344e Compiled by root on Mon Apr 2 15:49:32 UTC 2018 From source with checksum e47dbe8554cd78b7254c1856508175bd

0 个答案:

没有答案