Hive结合Zookeeper支持锁功能
Hive中包含了一个使用Zookeeper进行锁定的锁功能。Zookeeper实现了高度可靠的分布式协调服务。处理需要增加一些额外的设置和配置步骤。Zookeeper对于Hive用户来说是透明的。
安装Zookeeper参见Zookeeper文档
现在我们来配置Hive,让其可以使用这些Zookeeper节点来启用并发支持:
需要再Hive的配置文件hive-site.xml中增加如下配置
<property>
<name>hive.zookeeper.quorum</name>
<value>zk1,zk2,zk3</value>
</property>
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>
配置好这些属性以后,Hive会对特定的查询自动启动获取锁,用户可以使用如下命令来查看锁:
show locks ;
show locks places extended ;//places是分区表
show locks places partition(...) ;
show locks places partition(...) extended ;
Hive提供了2中类型的锁:共享锁和独占锁。
显示锁和独占锁:
用户同样地可以显示的管理锁,假设某个Hive会话对表people创建了一个显示锁:
lock table people exclusive ;
而此时另外一个Hive会话,尝试查询这个被锁定的表:
select * from people ;//失败 conflicting lock.
通过如下命令对表进行解锁以后,才可以进行查询等一些操作:
unlock table people ;