@Hive中的锁
1. Hive出现死锁的场景
前面遇到过一次因为Hive中表被锁住了,导致定时任务一直失败。原因是连接hiveserver2过于频繁,mysql连接被打满,引发的连锁反应,导致我们的任务一直失败。
在执行insert into或insert overwrite任务时,中途手动将程序停掉,会出现卡死情况(无法提交MapReduce),只能执行查询操作,而drop 、insert操作均不可操作,无论执行多久,都会保持卡死状态
2. 查看Hive中的死锁
查看Hive的中死锁,可以使用**show locks [tableName]**来查看
hive>show locks history_helpers;
可以看到里面的那个Type下的EXCLUSIVE,这是一种互斥锁,需要解决,否则后续的查询和插入任务都会影响
3. Hive中死锁的机制
hive存在两种锁,共享锁**Shared (S)和互斥锁Exclusive (X)**
锁SXS是否
X否否
锁的基本机制是:
元信息和数据的变更需要互斥锁
数据的读取需要共享锁
触发共享锁的操作是可以并发执行的,但是触发互斥锁,那么该表和该分区就不能并发的执行作业了。