2015-01-12 1 views
2

HIVE 0.13은 데이터베이스의 모든 테이블에서 select 문을 실행할 때 전체 데이터베이스 (LOCK-0000000000과 같은 노드가 Zookeeper의 데이터베이스 노드의 자식으로 표시됨)를 공유합니다. 데이터 베이스. HIVE는 select 문을 실행할 때도 스키마 전체에 공유 잠금을 생성합니다. 이렇게하면 원래 쿼리가 끝나고 잠금이 해제 될 때까지 데이터베이스의 다른 테이블에 대한 CREATE/DELETE 문이 고정됩니다.하이브 하나의 테이블에서 select를 실행할 때 전체 데이터베이스를 잠급니다.

아무도이 문제를 해결할 방법을 알고 있습니까? 다음 링크는 동시성이 꺼져 있음을 제안하지만 전체 테이블을 교체 할 때 수행 할 수 없으며 전체 내용을 바꾸기 전에 선택 문이 테이블에 액세스하지 않도록해야합니다.

다른 하이브 쉘에서

http://mail-archives.apache.org/mod_mbox/hive-user/201408.mbox/%3C0eba01cfc035 $ 3501e4f0 $ 9f05aed0 $ @ 닷컴 % 3E

use mydatabase; 
select count(*) from large_table limit 1;  # this table is very large and hive.support.concurrency=true` 

한편 1 쿼리가 실행 :

use mydatabase; 
create table sometable (id string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE ; 

문제은 "CREATE TABLE"는 않는다는 것입니다 첫 번째 쿼리 (선택)가 끝날 때까지 실행되지 않습니다.

업데이트 : 우리는 Cloudera의 Hive CDH-5.2.1-1 배포판을 사용하고 있으며이 문제가 있습니다.

답변

-1

나는 하이브 0.13에서 그렇게 만들지 않았다고 생각한다. 리소스 관리자를 확인하고 여러 개의 하이브 쿼리를 실행할 때 메모리가 충분한 지 확인하십시오.

각 하이브 쿼리가지도 축소 작업을 실행하고 YARN에 충분한 리소스가없는 경우 이전 실행중인 작업이 완료 될 때까지 대기합니다. 기억의 관점에서 문제를 해결하십시오.

모두 최고!

+1

테이블을 만들면 맵 축소 작업이 시작되지 않습니다. 그것은 단지 Metastore에 대한 행동 일뿐입니다. Hive 0.13으로 업그레이드 한 후 새로운 잠금 장치가 발생했습니다. 미안하지만 제안이 없지만 메모리와는 아무런 관련이 없다는 것이 확실합니다. –

+0

알렉스, 어떻게 자물쇠를 풀려고 했니? 우리에게는 해결책이 있지만 깨끗하지는 않습니다. –

+0

@alexP_Keaton 관심이 있으시면별로 깨끗한 해결책은 없습니다 : http://etl.svbtle.com/removing-database-level-locks-in-hive –

관련 문제