[hive] common.JvmPauseMonitor (JvmPauseMonitor.java:run(194)) - Detected pause in JVM or host machine (eg GC): pause of approximately 1727ms 메시지

2019. 7. 1. 17:39·빅데이터/hive

최근 hive 작업을 진행하면서 하이브 메타스토어의 연결이 자주 끊어지는 현상이 발생하였습니다. 이 문제를 확인하기 위해서 로그를 확인하였는데 다음과 같은 메시지를 확인할 수 있었습니다. 이 메시지는 어떤 이유(보틍은 GC작업)에 의해서 JVM이 멈췄다는 것을 이야기 하고 있습니다.

 

2019-05-20T08:20:23,695 INFO  [org.apache.hadoop.hive.common.JvmPauseMonitor$Monitor@503a5861([])]: common.JvmPauseMonitor (JvmPauseMonitor.java:run(194)) - Detected pause in JVM or host machine (eg GC): pause of approximately 1727ms
2019-05-20T08:20:25,670 INFO  [org.apache.hadoop.hive.common.JvmPauseMonitor$Monitor@503a5861([])]: common.JvmPauseMonitor (JvmPauseMonitor.java:run(194)) - Detected pause in JVM or host machine (eg GC): pause of approximately 1310ms
2019-05-20T08:20:27,931 INFO  [org.apache.hadoop.hive.common.JvmPauseMonitor$Monitor@503a5861([])]: common.JvmPauseMonitor (JvmPauseMonitor.java:run(194)) - Detected pause in JVM or host machine (eg GC): pause of approximately 1761ms

원인

이 오류가 발생한 원인을 확인한 결과 다음과 같았습니다. 요약하면 많은 파티션으로 인한 GC로 메타스토어의 JVM이 멈추는 것이 원인이었습니다.

 

  1. 하나의 테이블에 매일 파티션이 2000개 정도 생성됨
  2. 누적되면서 현재 파티션이 20만개 정도 생성되었음
  3. 데이터를 입력, 조회할 때마다 하이브 메타스토어가 파티션 정보를 읽음 
  4. 메모리에 많은 데이터를 올려서 GC가 오래 걸림 
  5. 하이브 메타스토어가 응답이 없어서, 관리 프로세스가 메타스토어를 재기동
  6. 메타스토어가 재기동 하면서 기존 연결된 세션이 끊어짐

해결방안

이 문제는 테이블의 구조를 변경하여 과도한 파티션이 생성되지 않도록 수정하였습니다. 그리고 동시에 버켓팅을 이용하여 하루에 생성되는 파티션 개수를 10개 내외로 줄일 수 있었습니다. 파티션이 많아지면 데이터가 저장되는 사이즈를 줄일 수 있지만, 조회시에 메타스토어에 부담을 줄 수 있기 때문에 적당한 개수를 유지하는 것이 좋습니다.

 

https://github.com/apache/hive/blob/master/standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/metrics/JvmPauseMonitor.java

 

apache/hive

Apache Hive. Contribute to apache/hive development by creating an account on GitHub.

github.com

 

반응형

'빅데이터 > hive' 카테고리의 다른 글

[hive] 테이블 DROP 시 발생하는 Caused by: MetaException(message:Timeout when executing method: drop_table_with_environment_context; 69853ms exceeds 60000ms) 오류  (0) 2019.07.29
[hive] TEZ 작업중 GC overhead limit exceeded 오류 처리  (0) 2019.07.05
[hive] 하이브 테이블 조회시 파티션 개수 제약하기  (0) 2019.05.22
[hive] TEZ엔진을 이용한 UNION ALL INSERT문에서 서브디렉토리 생성을 막는 방법  (0) 2019.04.09
[hive] explain을 이용하여 CBO 적용 여부 확인  (0) 2019.04.05
'빅데이터/hive' 카테고리의 다른 글
  • [hive] 테이블 DROP 시 발생하는 Caused by: MetaException(message:Timeout when executing method: drop_table_with_environment_context; 69853ms exceeds 60000ms) 오류
  • [hive] TEZ 작업중 GC overhead limit exceeded 오류 처리
  • [hive] 하이브 테이블 조회시 파티션 개수 제약하기
  • [hive] TEZ엔진을 이용한 UNION ALL INSERT문에서 서브디렉토리 생성을 막는 방법
hs_seo
hs_seo
Hello World!
    반응형
  • hs_seo
    개발자로 살아남기
    hs_seo
  • 전체
    오늘
    어제
    • 전체 (1140)
      • 개발자 (21)
        • 개발에 유의할 점 (0)
        • 면접 (5)
      • IT 소식 (5)
        • 업계 (1)
      • java (51)
        • 디자인패턴 (3)
        • apache-common (1)
      • 개념 (47)
        • 자료구조 (4)
        • 함수형사고 (8)
        • 디자인패턴 (1)
      • 데이터분석 (1)
      • python (67)
        • 코드조각 (12)
        • 라이브러리 (2)
      • 빅데이터 (418)
        • zookeeper (5)
        • hadoop (78)
        • hdfs (12)
        • hive (127)
        • hbase (16)
        • spark (40)
        • scala (4)
        • trino (3)
        • oozie (41)
        • Hue (9)
        • R (5)
        • sqoop (6)
        • flume (3)
        • elasticsearch (2)
        • airflow (16)
        • kafka (3)
        • kubernetes (10)
        • openstack (3)
        • flink (2)
        • redis (2)
      • 빅데이터 강좌 (2)
      • 알고리즘 (131)
        • 알고리즘 (1)
        • 백준 (61)
        • 정올 (41)
        • 더블릿 (5)
        • 프로그래머스 (1)
      • 프로그래밍 언어 (30)
        • go (4)
        • js (9)
        • .Net (6)
        • Jsp (1)
        • ansible (3)
        • terraform (6)
      • Tools (56)
        • docker (2)
        • macbook (6)
        • maven (3)
        • sublime (1)
      • 프레임워크 (25)
        • [JS] angularjs (2)
        • [JS] node.js (19)
        • [Java] spring (2)
        • Android (2)
      • 데이타베이스 (43)
        • SQLD (5)
        • Oracle (1)
        • MySQL (8)
        • ADsP (2)
      • 리눅스 (25)
        • Bash (61)
      • GCP (5)
      • AWS (34)
        • EC2 (2)
        • EMR (14)
      • 정보보안기사 (4)
        • 네트워크 (1)
      • 개인 (80)
        • 업무실수 (0)
        • 책 (9)
        • 교육 (3)
        • 여행 (17)
        • 영화 (12)
        • 음악 (2)
        • 피규어 (4)
        • 게임 (3)
        • 생각 (7)
        • 기타 (10)
        • 좋은글 (5)
        • 좋은 사이트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

    • 빅데이터-하둡,하이브로 시작하기
    • 빅데이터-스칼라, 스파크로 시작하기
    • Kaggle에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

    Linux
    error
    yarn
    HDFS
    k8s
    하둡
    mysql
    백준
    알고리즘
    bash
    ubuntu
    hbase
    S3
    nodejs
    AWS
    build
    emr
    오류
    Tez
    Hadoop
    airflow
    SPARK
    다이나믹
    java
    하이브
    파이썬
    oozie
    HIVE
    Python
    정올
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[hive] common.JvmPauseMonitor (JvmPauseMonitor.java:run(194)) - Detected pause in JVM or host machine (eg GC): pause of approximately 1727ms 메시지
상단으로

티스토리툴바