Hive:获得明确的排他锁

时间:2015-10-27 13:32:30

标签: hive locking hortonworks-data-platform

配置(hortonworks)

  • hive:BUILD hive-1.2.1.2.3.0.0
  • Hadoop 2.7.1.2.3.0.0-2557

我正在尝试执行

lock table event_metadata EXCLUSIVE;

Hive响应:

  

处理语句时出错:FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1。当前事务管理器不支持显式锁定请求。事务管理器:org.apache.hadoop.hive.ql.lockmgr.DbTxnManager

在代码中有显而易见的禁用显式锁的地方: http://grepcode.com/file/repo1.maven.org/maven2/org.apache.hive/hive-exec/1.2.0/org/apache/hadoop/hive/ql/lockmgr/DbTxnManager.java#DbTxnManager

321  @Override
322  public boolean supportsExplicitLock() {
323    return false;
324  }

问题:

如何使显式锁定工作?他们出现在什么版本的蜂巢中?

以下是显式锁定工作的cloudera示例http://www.ericlin.me/how-table-locking-works-in-hive

3 个答案:

答案 0 :(得分:0)

Hive 包含 locking 功能, Apache Zookeeper 用于 {{ 1}} 即可。 locking 实现了高度可靠的分布式协调。除了一些其他设置和配置步骤, Zookeeper 隐身 Zookeeper 用户。

Hive 文件中,设置以下属性:

$HIVE_HOME/hive-site.xml

重新启动 <property> <name>hive.zookeeper.quorum</name> <value>zk1.site.pvt,zk1.site.pvt,zk1.site.pvt</value> <description>The list of zookeeper servers to talk to. This is only needed for read/write locks. </description> </property> <property> <name>hive.support.concurrency</name> <value>true</value> <description>Whether Hive supports concurrency or not. A Zookeeper instance must be up and running for the default Hive lock manager to support read-write locks.</description> </property> 后,运行命令

hive

参考:编写Hive,O&#39; REILLY

修改

提供默认Hive行为的

DummyTxnManager.java具有

hive> lock table event_metadata EXCLUSIVE;

@Override public boolean supportsExplicitLock() { return true; } 重复 DummyTxnManager 并不支持 pre Hive-0.13 behavior

其中

DbTxnManager.java,将 transactions 存储在 transactions metastore 中,有:

database

答案 1 :(得分:0)

您可以动态设置并发参数:

https://www.googleapis.com/auth/gmail.settings.basic

在此之后,您可以尝试执行命令

答案 2 :(得分:0)

尝试以下操作:

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

解锁表表名;