Hive Lock 流程简析

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Hive在 0.7 开始对并发进行支持,本文简述一下Hive(CDH4. 2.0 )的锁处理流程:
1 .  首先对query进行编译,生成QueryPlan
2 .  构建读写锁对象(主要两个成员变量:LockObject,Lockmode)
对于非分区表,直接根据需要构建S或者X锁对象
对于分区表:
(此处是区分input/output)
If S mode:
直接对Table/related partition 构建S对象
Else:
If 添加新分区:
构建S对象
Else
构建X对象
End
3 .  对锁对象进行字符表排序(避免死锁),对于同一个LockObject,先获取Execlusive
4 .  遍历锁对象列表,进行锁申请
While trynumber< hive.lock.numretries(default100):
创建parent(node)目录,mode= CreateMode.PERSISTENT
创建锁目录,mode=CreateMode.EPHEMERAL_SEQUENTIAL
For Child:Children
If Child已经有写锁:
获取child写锁seqno
If mode=X 并且 Child 已经有读锁
获取child读锁seqno
If childseqno> 0 并且小于当前seqno
释放锁
Trynumber++
Sleep(hive.lock.sleep.between.retries:default1min)


因此对于并发相对较高的场景来说默认的sleep时间太长了,并且这里使用的sleep模型也太简单,可能与本身hive并发写场景较少有关系.

另外就是对于是否启用并发是可以在客户端设置的,因此如果对于写的ETL Job担心被读锁住时可以在脚本里关闭该特性.



本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1308139,如需转载请自行联系原作者

相关文章
|
SQL 存储 分布式计算
快速上手Hive,安装到使用的流程介绍
快速上手Hive,安装到使用的流程介绍
快速上手Hive,安装到使用的流程介绍
|
SQL HIVE 网络性能优化
|
SQL 监控 数据库
|
SQL 分布式计算 HIVE
|
5月前
|
SQL 数据采集 数据挖掘
大数据行业应用之Hive数据分析航班线路相关的各项指标
大数据行业应用之Hive数据分析航班线路相关的各项指标
108 1
|
5月前
|
SQL 存储 大数据
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
85 0
|
7月前
|
SQL 分布式计算 大数据
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
黑马程序员-大数据入门到实战-分布式SQL计算 Hive 入门
78 0
|
7月前
|
SQL Java 大数据
Hive实战(03)-深入了解Hive JDBC:在大数据世界中实现数据交互
Hive实战(03)-深入了解Hive JDBC:在大数据世界中实现数据交互
238 1
|
5月前
|
SQL 分布式计算 数据库
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
【大数据技术Spark】Spark SQL操作Dataframe、读写MySQL、Hive数据库实战(附源码)
114 0