카일린 kylin, olap on hadoop

28
Apache Kylin 하둡 기반의 데이터 큐브 시스템

Upload: -

Post on 23-Jan-2018

491 views

Category:

Software


0 download

TRANSCRIPT

Page 1: 카일린 Kylin, OLAP on hadoop

Apache Kylin하둡 기반의 데이터 큐브 시스템

Page 2: 카일린 Kylin, OLAP on hadoop

OLAPOLAP is an acronym for Online Analytical Processing. OLAP performs multidimensional analysis of business data and provides the capability for complex calculations, trend analysis, and sophisticated data modeling. It is the foundation for many ki ….

결국은GROUP BY

METRIC

Page 3: 카일린 Kylin, OLAP on hadoop

보고자 하는 것- 남자가 봐? 여자가 봐? -> 성별로 조회수- 어느 지역에서 검색어 추이가 어때 -> 지역별, 시간별 검색 횟수- 남자 10대 ~ 20대 타겟 개인화를 하려 하는데 .. -> 성별, 연령별, 시간별 체류 시간

SELECT `gender`, `age`, `location`, 조회수, 검색 횟수, 체류 시간FROM 데이터_마트WHERE 아웃라이어 제거 조건GROUP BY `gender`, `age`, `location`HAVING 유의미한 지표 필터링

Page 4: 카일린 Kylin, OLAP on hadoop

문제는 데이터 사이즈- 엑셀

- RDB, Netezza- 데이터 마트- Star Schema

“내가 해봤는데, 하루 100만건 까지는 지지고 볶고 하면 되겠는데아 그래, 좀 크게 잡아서 3~4백만건까지는 OK.근데 그 이상은 좀 힘들더라 근데 커팅 형님이 도와줬지 ㅎㅎㅎ”

김철수(가명) 40대? 시니어 개발자

Page 5: 카일린 Kylin, OLAP on hadoop

Netezza

수억원 한대요 ㄷㄷㄷ

Page 6: 카일린 Kylin, OLAP on hadoop

그때는 OLAP 쿼리 토요일날 돌려놓고 퇴근했어그리고 월요일 아침정도에 거의 끝나거덩그러면 그거 정리해서 오후에 리포팅 했지껄껄껄 ...

김민수(가명) 40대? 시니어 개발자

Page 7: 카일린 Kylin, OLAP on hadoop

수십억, GROUP BY- Hadoop v1- Hive

음.. 일단 몇시간 내로 나오긴 나오네!그게 어디야. 세상 좋아졌네~ 껄껄껄

Page 8: 카일린 Kylin, OLAP on hadoop

수백억건, GROUP BY, 실시간- Hadoop- Hive는 너무 느려! 데싸님들의 높아진 눈높이- Spark + Zeppelin. 노트북- Elastic Search- Apache Kylin- Google Dremel- 컬럼 Oriented, 실행 트리- Apache Drill- Impala + Kudu- Druid

빅데이터 처리 관점으로의 OLAP

Interactive OLAP의 패러다임

Page 9: 카일린 Kylin, OLAP on hadoop

실시간 빅데이터 OLAP, HOW?- 열라 빨리 읽어 열라 빠르게 처리한다.- 그까이꺼 미리 다 만들어 놓는다.

Page 10: 카일린 Kylin, OLAP on hadoop

열라 빨리 읽어 열라 빨리 처리한다.- 저장은 Column 지향, 인코딩, 샤딩- 병렬로 최적 실행 트리를 만들어 처리.- 당연한 장비빨. SSD, 네트웍 장비, 어마무시한 노드수- CPU Instruction, Memory prefetch- 쿼리 컴파일- 확률적 추정, 샘플링

Page 11: 카일린 Kylin, OLAP on hadoop

Impala

Page 12: 카일린 Kylin, OLAP on hadoop

Impala - Code Gen

Page 13: 카일린 Kylin, OLAP on hadoop

Impala, LLVM Query Compile

https://github.com/apache/incubator-impala/blob/master/be/src/exec/partitioned-hash-join-node.cc

Page 14: 카일린 Kylin, OLAP on hadoop

Apache Kudu - CPU Instruction

Page 15: 카일린 Kylin, OLAP on hadoop

난 둘다 지롱- Druid- 샘플링! 표본으로 모집단 추정. 참값과 달라도 쇠고랑 차지 않아요.재 방문률타겟팅 유효율Top 1000유니크 방문자. 1 2314 1212 vs 1 1841 5123증감

Page 16: 카일린 Kylin, OLAP on hadoop
Page 17: 카일린 Kylin, OLAP on hadoop

그까이꺼 미리 다 만들어 놓는다 - 데이터 큐브- 전날 배치를 돌려 모든 조합을 만들어 놓는다.

Page 18: 카일린 Kylin, OLAP on hadoop

8개월간의 사투- ㅋㅋㅋㅋ 야이씨 데이터가 많은데 그걸 빨리 읽어서 처리? ㅋㅋㅋㅋㅋ카일린 고고

- 흠.. 혹시나… Impala + Kudu 어때?오.. 괜찮네. 몇개는 역시 한계가 있는 건가.

- 음?? Druid! 괜찮네.. Impala + Kudu 한계까지 커버 하네!- 현재 Druid로 새로 꾸리는 중...

Page 19: 카일린 Kylin, OLAP on hadoop

자, 시작합니다. 카일린(키린도 맞아요)

Page 20: 카일린 Kylin, OLAP on hadoop

Tomcat + Spring+ Calcite

HBaseHive

Page 21: 카일린 Kylin, OLAP on hadoop

카프카스팍

스트리밍스팍

스트리밍엘라스틱 서치

Parquet

스팍

스팍 SQL

Parquet Hive

Kylin

Query

실시간

배치

Page 22: 카일린 Kylin, OLAP on hadoop

Curse of dimension- 조합의 수. 디멘션의 개수 10개의 총 조합수nC1 + nC2 + nC3 + … + nCn = 2^n - 1개

- 조합 수보다 중요한 건 Unique Cardinality디멘션이 4개, 각 디멘션당 Unique Cardinality 100만개그러면 1 0000 0400 0006 0000 0400 0000개. 1자 400경 6억 4백만.

- 무식하게 다 빌드 했더니 1.7T ㄷㄷ 근데 하루 치 ㄷㄷㄷㄷㄷㄷㄷ카일린 당신이란 사람은 대체 ㄷㄷㄷㄷ

Page 23: 카일린 Kylin, OLAP on hadoop

디멘션 프루닝- Aggregation Group- Mandatory - Hierarchy- Joint- Derived

필요 없는 조합은 만들지 않는다.

Page 24: 카일린 Kylin, OLAP on hadoop

But 현실에서는 ...

데싸 : 나는 Store 디멘션은 필요 없어 ㅎㅎㅎㅎ데엔 : 아 그래요? 그럼 Store 빼놓고 큐브 빌드 할게요 ㅎㅎㅎㅎ데싸 : 그래 ㅎㅎㅎㅎ

1주일 뒤

데싸 : Store별로 보는게 나을 것 같습니다.데엔 : 데싸 당신이란 사람은 대체 ...

불필요한 Store 디멘션은 빼고 큐브 빌드

Page 25: 카일린 Kylin, OLAP on hadoop

네, 제가 해보겠습니다.D2에 DockerFile만들어 놨어요

http://d2.naver.com/helloworld/1057065

Page 26: 카일린 Kylin, OLAP on hadoop

Kylin Insight- 디멘션 프루닝- 인코딩 - 큐브 빌드 알고리즘- 데이터 큐브 On Hadoop- 샘플링

- 샤딩

Page 27: 카일린 Kylin, OLAP on hadoop

부족했던 점- 데이터는 무럭무럭 자란다. 스키마 에볼루션?쿼리가 고정된 경우에는 적합하지만어떤 쿼리가 들어올지 모르는 상황에서는 유즈케이스가 안맞는 것 같다.

- 실시간 처리- 큐브 병합. 주별, 월별이 아닌 n일치로 병합그러니까 1월 + 2월분이 섞이게 된다.

- 헤비 쿼리를 날리면 HBase 왜 니가 죽냐...

Page 28: 카일린 Kylin, OLAP on hadoop

QnA