hive表鎖定問題(Locks on the underlying objects cannot be acquired)

一、刪除表失敗

1.1 描述?

創建了一張臨時表但是在插入數據後刪除表時報錯
在這裏插入圖片描述

1.2 爲什麼會產生?

因爲在hive0.7版本之後開始支持併發,線上環境默認是用zookeeper做hive的鎖管理,Hive開啓併發功能的時候自動開啓鎖功能。

1.3 如何解決?

set hive.support.concurrency=false;
drop table table_name;

1.4 排查過程

1.4.1.查看錶是否被鎖定

SHOW LOCKS <TABLE_NAME>;
SHOW LOCKS <TABLE_NAME> extended;
SHOW LOCKS <TABLE_NAME> PARTITION (<PARTITION_DESC>);
SHOW LOCKS <TABLE_NAME> PARTITION (<PARTITION_DESC>) extended;

!–返回結果,會告知是否產生鎖–

1.4.2.解決表被鎖死問題

set hive.support.concurrency=false; 默認爲true
!--或者--
unlock table table_name;

1.5 詳解原理

hive 目前主要有兩種鎖,SHARED(共享鎖 S)和 Exclusive(排他鎖 X)。共享鎖 S 和 排他鎖 X 它們之間的兼容性矩陣關係如下:
在這裏插入圖片描述
總結起來就是:
1)查詢操作使用共享鎖,共享鎖是可以多重、併發使用的
2)修改表操作使用獨佔鎖,它會阻止其他的查詢、修改操作
3)可以對分區使用鎖。
以下情況會出發鎖,以及它的類型和鎖定範圍如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章