[hive] 하이브 성능 최적화 방안

2017. 12. 26. 16:08·빅데이터/hive

하이브의 성능 향상을 위한 방안은 다음과 같다. 


TEZ 엔진 사용

hive 의 기본엔진은 mr 이었으나 2.x로 넘어오면서 tez를 사용하게 되었다. 

mr 엔진은 맵리듀스 연산중 중간 파일을 로컬 디스크에 쓰면서 진행한다. 

이로 인한 IO 비용으로 늦어지게 되는데 tez 엔진은 이 임시 파일을 메모리에 저장하여 처리 속도를 높인다.


: 엔진 설정 및 큐 설정

set hive.execution.engine=tez;

set tez.queue.name=queue;


ORC 파일 사용

데이터 저장에 ORC 파일 포맷을 이용한다. 

ORC 파일 포맷은 데이터를 컬럼별로 저장하기 때문에 검색 속도와 압축률이 좋다. 


아래와 같이 CREATE 문에 STORED AS 구문을 추가하면 된다. 

압축방식도 프로퍼티를 이용하여 설정할 수 있다. 


CREATE TABLE table1(

    col1 STRING

) 

STORED AS ORC

TBLPROPERTIES ("orc.compress"="SNAPPY");


Vectorization 사용

벡터화를 사용하면 한번에 1024개의 row 를 처리하여 처리속도를 높인다. 

filter, join, aggregation 처리의 속도를 높여 준다. 


: 벡터화 프로퍼티 설정

set hive.vectorized.execution.enabled=true;

set hive.vectorized.execution.reduce.enabled=true;



파티셔닝, 버켓팅 사용

데이터 검색에 사용되는 데이터를 줄이기 위한 방안으로 파티셔닝, 버켓팅 기능을 제공한다. 

파티셔닝은 데이터를 폴더 단위로 구분하여 저장하고,

버켓팅은 지정한 개수의 파일에 컬럼의 해쉬값을 기준으로 데이터를 저장한다. 


: 파티셔닝

CREATE TABLE table1(

    col1 STRING

) 

PARTITIONED BY (yymmdd STRING);


: 버켓팅
CREATE TABLE table1(
    col1 STRING
) 
CLUSTERED BY(user_id) INTO 256 BUCKETS;


CBO 사용

CBO를 이용하면 하이브 메타의 정보를 이용하여 쿼리의 성능을 향상시킨다. 

count, sum 같은 집계함수는 CBO를 이용하여 맵리듀스 연산없이 바로 결과를 확인할 수 도 있다. 


set hive.cbo.enable=true;

set hive.compute.query.using.stats=true;

set hive.stats.fetch.column.stats=true;

set hive.stats.fetch.partition.stats=true;



성능향상을 위한 설정값 - https://streever.atlassian.net/wiki/spaces/HADOOP/pages/1933314/Hive+Performance+Tips

https://dzone.com/articles/how-to-improve-hive-query-performance-with-hadoop

http://wwhitelife.tistory.com/21

http://sanjivblogs.blogspot.kr/2015/05/10-ways-to-optimizing-hive-queries.html


반응형
저작자표시 비영리 (새창열림)

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

[hive] java.lang.OutOfMemoryError: Java heap space 오류 수정  (0) 2018.01.03
[hive][db] rank() 함수를 이용하여 그룹별로 상위 n개의 결과만 출력하는 방법  (0) 2017.12.27
[hive] explode, lateral view 사용 예제  (0) 2017.12.26
[hive] drop table partitions 의 null 오류  (0) 2017.12.21
[hive] 정규식을 이용하여 문자열 검색  (0) 2017.12.14
'빅데이터/hive' 카테고리의 다른 글
  • [hive] java.lang.OutOfMemoryError: Java heap space 오류 수정
  • [hive][db] rank() 함수를 이용하여 그룹별로 상위 n개의 결과만 출력하는 방법
  • [hive] explode, lateral view 사용 예제
  • [hive] drop table partitions 의 null 오류
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에서 파이썬으로 데이터 분석 시작하기
    • 쉘스크립트 개발 시작하기
    • 개발자가 데이터 분석 준전문가 되기
    • 데브쿠마
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[hive] 하이브 성능 최적화 방안
상단으로

티스토리툴바