33
Copyright © 2013 kt NexR. All rights reserved. Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 우성한 [email protected] 2013.11.06

Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

  • Upload
    others

  • View
    6

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

Hive Storage Handler를 활용한실시간 검색 및 적용 사례

우성한

[email protected]

2013.11.06

Page 2: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

목차

• 요구사항

• 실시간 쿼리 분석

• Hive Storage Handler

• JDBC Storage Handler

• HBase Storage Handler 및 HBase 설계

• 성능 및 결론

• QnA

Page 3: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

요구사항

Page 4: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

요구사항

HBase Hive

경제성(비용 합리성, 효율성)

• Based on HDFS• Compression• Apache License

호환성(SQL 호환, 동일한 업무처리 결과)

• Various Client- thrift, REST, java, HIVE, PIG, etc…

• HQL• UDF, UDTF, UDAF

확장성(장비 추가에 따른 선형적 확장성)

• Add/Remove Regions

수용성(비정형 데이터, 다양한 데이터 포맷 처리)

• Add/Remove Columns• RHive• SerDe• Storage Handler

Real-time(실시간 검색)

• Consistent read & write

Page 5: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

실시간 쿼리 분석

Page 6: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

실시간 쿼리 유형

• Union Query

• Simple Query

• Sub Query

• Outer Join Query

• Inner Join Query

Page 7: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

Union 쿼리 유형

Select col1, col2, col3, col4 ….

From

(

select a.col1, a.col2, a.col3, d.col4 …

from a left outer join d

where col1 in (?, ?, ?) and col2 beetween (?, ?) and col3 = ‘1’

) union all

(

select a.col1, a.col2, a.col3, c.col4 …

from a left outer join c …

where col1 in (?, ?, ?) and col2 beetween (?, ?) and col3 = ‘0’

)

order by col1 desc;

Page 8: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

실시간 쿼리 검색 조건

• Subject column

Equal(), In()

• Range column

Between()

>=, >, <=, <

Page 9: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

실시간 쿼리 Process

Big DataTable

Dimension Table 1

DimensionTable 2

DimensionTable 3

Outer join

RDBMS

Client1 Client2 Client3 Client4

SQL

Page 10: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

실시간 쿼리 Process – Hive, HBase

Hive HQL

Dimension Table 1

DimensionTable 2

DimensionTable 3

HDFS RDBMS

HBase Storage Handler JDBC Storage Handler

Client1 Client2 Client3 Client4

HBase

HTableHTable

Page 11: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

Hive Storage Handler

Page 12: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

Hive Storage Handler

• Non-HDFS Storage 지원

Non-native table

HBase

S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc…

• SerDe, InputFormat, OutputFormat

• Meta Hook 제공

HTable 관리

• schema mapping

hive table + columns =

HBase table + (column families + column qualifiers)

• Predicate Push Down

Page 13: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

Hive Storage Handler - Process

Storage

HDFS Non-HDFS

Hadoop

Map Reduce

Driver

Parser Planner Optimizer Execute

Client

JDBC CLI

Page 14: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

Hive Storage Handler - Processcl

ient

Driver

Parser

Logical Plan

Logical Optimize

Physical Plan

Physical Optimize

Execute MapReduce

HDFS

Non-HDFS

Page 15: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

Hive Storage Handler – PseudoMR Processcl

ient

Driver

Parser

Logical Planner

Logical Optimizer

Fetch Conversion

OptimizerPseudo MR

Non-HDFS

HDFS

Physical Planner

Physical Optimizer

Execute MapReduce

HDFS

Non-HDFS

Apache Hive NexR Hive

일부 모드만 지원 PseudoMR 지원

* 참고사항

Page 16: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

제약사항

• 검색 결과가 많은 경우

Map Reduce 사용

• 메모리 사용량

Out of Memory 발생 가능

Page 17: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

JDBC Storage Handler

Page 18: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

JDBC Storage Handler

• RDBMS 테이블 활용

크기가 작은 Dimension 테이블

테이블 데이터 변경 가능성이 높음

Page 19: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

JDBC Storage Handler - Schema

CREATE EXTERNAL TABLE D(

col1 int,

col2 string,

col3 string,

col4 double,

col5 double,

col6 string)

ROW FORMAT SERDE

'org.apache.hadoop.hive.rdbms.JDBCDataSerDe'

STORED BY

'org.apache.hadoop.hive.rdbms.JDBCStorageHandler'

TBLPROPERTIES (

'hive.jdbc.output.columns.mapping'='col1,col2,col3,col4,col5,col6',

'hive.jdbc.input.columns.mapping'='col1,col2,col3,col4,col5,col6',

'hive.jdbc.primary.key.fields'=''

'mapred.jdbc.output.field.names'='col1,col2,col3,col4,col5,col6',

'mapred.jdbc.input.table.name'='D',

'mapred.jdbc.output.table.name'='D',

'mapred.jdbc.url'='${JDBC_URL}',

'mapred.jdbc.driver.class'='${JDBC_DRIVER_NAME}',

'mapred.jdbc.username'='${USERNAME}',

'mapred.jdbc.password'='${PASSWORD},

)

Page 20: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

JDBC Storage Handler - Schema

CREATE EXTERNAL TABLE D(

col1 int,

col2 string,

col3 string,

col4 double

)

ROW FORMAT SERDE

'org.apache.hadoop.hive.rdbms.JDBCDataSerDe'

STORED BY

'org.apache.hadoop.hive.rdbms.JDBCStorageHandler'

TBLPROPERTIES (

'hive.jdbc.output.columns.mapping'='col1,col2,col3,col4',

'hive.jdbc.input.columns.mapping'='col1,col2,col3,col4',

'hive.jdbc.primary.key.fields'=''

'mapred.jdbc.output.field.names'='col1,col2,col3,col4',

'mapred.jdbc.input.table.name'='D',

'mapred.jdbc.output.table.name'='D',

'mapred.jdbc.url'='${JDBC_URL}',

'mapred.jdbc.driver.class'='${JDBC_DRIVER_NAME}',

'mapred.jdbc.username'='${USERNAME}',

'mapred.jdbc.password'='${PASSWORD},

)

JDBC Connection 정보

JDBC Table Name

Column Mapping

Page 21: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

HBase Storage Handler 및HBase 설계

Page 22: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

HBase Row Key

• Composite Row Key

Subject column + SEPARATOR + Range column

col1 + “|” + col2

• 중복 데이터

Versioning 을 통한 최신 데이터 유지

Versioning 을 통한 제한적 중복 허용

Page 23: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

HBase Storage Handler - Schema

create [EXTERNAL] table A (

co1 string,

col2 timestamp,

col3 string,

col4 string

)

ROW FORMAT SERDE

'com.nexr.ndap.hbase.HBaseSerDe'

STORED BY

'com.nexr.ndap.hbase.HBaseStorageHandler'

WITH SERDEPROPERTIES (

'hbase.columns.mapping'=':subject,:range,cf:0,cf:1'

) TBLPROPERTIES (

'hbase.table.name'='hbase_test1'

)

Page 24: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

HBase Storage Handler - Schema

create [EXTERNAL] table A (

co1 string,

col2 timestamp,

col3 string,

col4 string

)

ROW FORMAT SERDE

'com.nexr.ndap.hbase.HBaseSerDe'

STORED BY

'com.nexr.ndap.hbase.HBaseStorageHandler'

WITH SERDEPROPERTIES (

'hbase.columns.mapping'=':subject,:range,cf:0,cf:1 ‘

) TBLPROPERTIES (

'hbase.table.name'=‘A'

)

col1

col2

col3

col4

HBase Table name

Page 25: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

Row Key 데이터 분포도

• Row key의 분포도를 미리 예측

Sampling 기법

• Bucketed table

– https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL+BucketedTables

• Sampling from Bucketed Table

– https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Sampling

전체 데이터의 Group by

• Row key에 해당하는 컬럼을 이용하여 Group by

Page 26: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

Row Key 데이터 분포도

• 1일치 데이터에 대한 Group by

• Subject 컬럼의 값의 분포도 조사

• 특정 값의 범위에 데이터 편중

Page 27: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

Row Key 데이터 분포도 – reverse()

• Hive 의 reverse() 함수 이용

• reverse(Subject Column)

Page 28: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

Row Key 데이터 분포도 – modular 연산, reverse()

• Modular Prefix

• concat(subject % 10, reverse(subject))

Page 29: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

HBase Region 사전 분할 방법

• 하나의 리전에서 시작 hbase.hregion.max.filesize 크기 이상 저장 시 분할됨

사전 분할을 통해 특정 데이터 노드에 데이터 쏠림 현상 방지

• 운용 가능 Region 수

Heap memory * Memstore 비율 / flush size

HEAP_SIZE * hbase.regionserver.global.memstore.upperLimit/ hbase.hregion.memstore.flush.size

16GB * 40% / 128m = 50 Region 운용가능

http://www.slideshare.net/larsgeorge/hbase-sizing-notes

• 분할 방식 지정 org.apache.hadoop.hbase.util.RegionSplitter 사용자 알고리즘 구현 테이블 구현시 ‘SPLIT’ 속성 지정

테이블 이름 테이블 데이터 크기 비율 할당 Region 갯수

A 60% 30개

B 40% 20개

Page 30: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

HBase 데이터 삽입시 유의 사항

Reduce1

Reduce2

Reduce3

Region1

Region2

Region3

Reduce1

Reduce2

Reduce3

Region1

Region2

Region3

Mapper/Reducer HBase Cluster[1,3,2]

[1,2,3]

[3,1,2]

[1]

[2]

[3]

Reducer HBase Cluster

[1,1,1]

[2,2,2]

[3,3,3]

[1]

[2]

[3]

삽입 시 데이터 정렬 기법

• Total ordering• http://stackoverflow.com/questions/137150

44/hive-cluster-by-vs-order-by-vs-sort-by

Mapper/Reducer Process

• 정렬되지 않은 상태• 여러 Region(수백개 이상)에 데이터

삽입을 하기 때문에 Client 의응답속도가 느려짐

Page 31: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

성능 및 결론

Page 32: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

성능 및 결론

0

1000

2000

3000

4000

5000

6000

7000

8000

9000

0

0.5

1

1.5

2

2.5

3

0 1 30 60 90

데이터 적재량에 따른 쿼리 응답 시간

Query response time Data Size

(days)

(Seconds) (GB)

Page 33: Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,

Copyright © 2013 kt NexR. All rights reserved.

QnA