[hive] 벡터화(vectorized) 처리

2020. 1. 7. 10:24·빅데이터/hive

하이브 성능 향상의 한 방법인 벡터화(vectorized) 처리는 한 번에 처리하는 데이터의 양을 늘려서 CPU 사용률을 높이고, 처리속도를 빠르게 하는 기법입니다.  검색, 필터, 집계, 조인 처리에서 사용되고, 한 번에 1024개의 행을 동시에 처리하여 속도를 높입니다. 

 

벡터화 설정을 하면 1024행(row)의 블록으로 한번에 작업을 처리합니다. 하나의 블록에서 열(column)은 배열로 처리됩니다. 아래의 클래스와 같이 칼럼이 ColumnVector클래스 배열로 한 번에 읽어서 처리합니다. 

 

 

조회, 필터링 등에 벡터화를 이용하면 한번에 처리하는 작업이 증가하여 속도가 빨라지게 됩니다. 16억 건의 데이터를 이용해서 count명령을 처리한 결과 벡터화 처리를 하지 않으면 67.6초, 벡터화 처리를 하면 31.5초로 성능이 향상되는 것을 확인하였습니다. 몇 번의 테스트 결과 count 같은 경우에는 40~50% 정도의 성능 향상을 확인할 수 있었습니다. 

 

벡터화 처리

벡터화 처리를 위해서는 데이터를 ORC 포맷으로 저장하고, 다음의 옵션을 설정해야 합니다.

-- 기본값은 false
set hive.vectorized.execution.enabled=true;

사용가능 데이터 타입

  • tinyint
  • smallint
  • int
  • bigint
  • boolean
  • float
  • double
  • decimal
  • date
  • timestamp (see Limitations below)
  • string

사용 가능 쿼리

  • arithmetic: +, -, *, /, %
  • AND, OR, NOT
  • comparisons <, >, <=, >=, =, !=, BETWEEN, IN ( list-of-constants ) as filters
  • Boolean-valued expressions (non-filters) using AND, OR, NOT, <, >, <=, >=, =, !=
  • IS [NOT] NULL
  • all math functions (SIN, LOG, etc.)
  • string functions SUBSTR, CONCAT, TRIM, LTRIM, RTRIM, LOWER, UPPER, LENGTH
  • type casts
  • Hive user-defined functions, including standard and generic UDFs
  • date functions (YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, UNIX_TIMESTAMP)
  • the IF conditional expression

Explain 확인

벡터화 처리가 가능한 쿼리인지는 Explain 명령으로 확인할 수 있습니다. 벡터화 처리가 가능하면 아래와 같이 vectorized 문구를 확인할 수 있습니다. 

 

STAGE PLANS:
  Stage: Stage-1
    Map Reduce
      Alias -> Map Operator Tree:
        alltypesorc
          TableScan
            alias: vectorizedtable
             Statistics: Num rows: 1 Data size: 95 Basic stats: COMPLETE Column stats: COMPLETE
            Select Operator
              Statistics: Num rows: 1 Data size: 95 Basic stats: COMPLETE Column stats: COMPLETE
              Group By Operator
                aggregations: count()
                mode: hash
                outputColumnNames: _col0
                Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                Reduce Output Operator
                  sort order:
                  Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                  value expressions: _col0 (type: bigint)
      Execution mode: vectorized
      Reduce Operator Tree:
        Group By Operator
          aggregations: count(VALUE._col0)
          mode: mergepartial
          outputColumnNames: _col0
          Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
          File Output Operator
            compressed: false
            Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
            table:
                input format: org.apache.hadoop.mapred.TextInputFormat
                output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
  Stage: Stage-0
    Fetch Operator
      limit: -1
      Processor Tree:
        ListSink

 

상세한 내용은 하이브의 위키에서 확인할 수 있습니다. 

 

https://cwiki.apache.org/confluence/display/Hive/Vectorized+Query+Execution

 

Vectorized Query Execution - Apache Hive - Apache Software Foundation

Introduction Vectorized query execution is a Hive feature that greatly reduces the CPU usage for typical query operations like scans, filters, aggregates, and joins. A standard query execution system processes one row at a time. This involves long code pat

cwiki.apache.org

 

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

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

[hive] 구체화 뷰(Materialized View)  (0) 2020.01.21
[hive] UDF에서 발생하는 argument type mismatch 오류 수정  (0) 2020.01.14
[hive] 하이브의 조인방식(hive join)  (0) 2020.01.06
[hive] Blobstore 기능으로 처리 속도 증가  (0) 2019.12.19
[hive] MSCK is missing partition columns under location. 오류 해결 방법  (0) 2019.12.04
'빅데이터/hive' 카테고리의 다른 글
  • [hive] 구체화 뷰(Materialized View)
  • [hive] UDF에서 발생하는 argument type mismatch 오류 수정
  • [hive] 하이브의 조인방식(hive join)
  • [hive] Blobstore 기능으로 처리 속도 증가
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
    오류
    HIVE
    SPARK
    백준
    k8s
    하둡
    nodejs
    yarn
    Linux
    하이브
    airflow
    S3
    ubuntu
    정올
    AWS
    emr
    bash
    다이나믹
    파이썬
    HDFS
    build
    error
    Tez
    Python
    Hadoop
    알고리즘
    oozie
    hbase
    mysql
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
hs_seo
[hive] 벡터화(vectorized) 처리
상단으로

티스토리툴바