Hive Storage Handler를 활용한 실시간 검색 및 적용 사례 Storage Handler.pdf · 2018-06-12 · S3, DynamoDB, Cassandra, MongoDB, JDBC, Excel etc… •SerDe, InputFormat,
Post on 26-May-2020
6 Views
Preview:
Transcript
Copyright © 2013 kt NexR. All rights reserved.
Hive Storage Handler를 활용한실시간 검색 및 적용 사례
우성한
David.woo@nexr.com
2013.11.06
Copyright © 2013 kt NexR. All rights reserved.
목차
• 요구사항
• 실시간 쿼리 분석
• Hive Storage Handler
• JDBC Storage Handler
• HBase Storage Handler 및 HBase 설계
• 성능 및 결론
• QnA
Copyright © 2013 kt NexR. All rights reserved.
요구사항
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
Copyright © 2013 kt NexR. All rights reserved.
실시간 쿼리 분석
Copyright © 2013 kt NexR. All rights reserved.
실시간 쿼리 유형
• Union Query
• Simple Query
• Sub Query
• Outer Join Query
• Inner Join Query
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;
Copyright © 2013 kt NexR. All rights reserved.
실시간 쿼리 검색 조건
• Subject column
Equal(), In()
• Range column
Between()
>=, >, <=, <
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
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
Copyright © 2013 kt NexR. All rights reserved.
Hive Storage Handler
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
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
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
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 지원
* 참고사항
Copyright © 2013 kt NexR. All rights reserved.
제약사항
• 검색 결과가 많은 경우
Map Reduce 사용
• 메모리 사용량
Out of Memory 발생 가능
Copyright © 2013 kt NexR. All rights reserved.
JDBC Storage Handler
Copyright © 2013 kt NexR. All rights reserved.
JDBC Storage Handler
• RDBMS 테이블 활용
크기가 작은 Dimension 테이블
테이블 데이터 변경 가능성이 높음
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},
)
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
Copyright © 2013 kt NexR. All rights reserved.
HBase Storage Handler 및HBase 설계
Copyright © 2013 kt NexR. All rights reserved.
HBase Row Key
• Composite Row Key
Subject column + SEPARATOR + Range column
col1 + “|” + col2
• 중복 데이터
Versioning 을 통한 최신 데이터 유지
Versioning 을 통한 제한적 중복 허용
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'
)
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
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
Copyright © 2013 kt NexR. All rights reserved.
Row Key 데이터 분포도
• 1일치 데이터에 대한 Group by
• Subject 컬럼의 값의 분포도 조사
• 특정 값의 범위에 데이터 편중
Copyright © 2013 kt NexR. All rights reserved.
Row Key 데이터 분포도 – reverse()
• Hive 의 reverse() 함수 이용
• reverse(Subject Column)
Copyright © 2013 kt NexR. All rights reserved.
Row Key 데이터 분포도 – modular 연산, reverse()
• Modular Prefix
• concat(subject % 10, reverse(subject))
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개
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 의응답속도가 느려짐
Copyright © 2013 kt NexR. All rights reserved.
성능 및 결론
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)
Copyright © 2013 kt NexR. All rights reserved.
QnA
top related