SlideShare a Scribd company logo
Apache Kylin
하둡 기반의 데이터 큐브 시스템
OLAP
OLAP 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
보고자 하는 것
- 남자가 봐? 여자가 봐? -> 성별로 조회수
- 어느 지역에서 검색어 추이가 어때 -> 지역별, 시간별 검색 횟수
- 남자 10대 ~ 20대 타겟 개인화를 하려 하는데 .. -> 성별, 연령별, 시간별 체류
시간
SELECT `gender`, `age`, `location`, 조회수, 검색 횟수,
체류 시간
FROM 데이터_마트
WHERE 아웃라이어 제거 조건
GROUP BY `gender`, `age`, `location`
HAVING 유의미한 지표 필터링
문제는 데이터 사이즈
- 엑셀
- RDB, Netezza
- 데이터 마트
- Star Schema
“내가 해봤는데, 하루 100만건 까지는
지지고 볶고 하면 되겠는데
아 그래, 좀 크게 잡아서
3~4백만건까지는 OK.
근데 그 이상은 좀 힘들더라
근데 커팅 형님이 도와줬지 ㅎㅎㅎ”
김철수(가명) 40대? 시니어 개발자
Netezza
수억원
한대요
ㄷㄷㄷ
그때는 OLAP 쿼리 토요일날 돌려놓고 퇴근했어
그리고 월요일 아침정도에 거의 끝나거덩
그러면 그거 정리해서 오후에 리포팅 했지
껄껄껄 ...
김민수(가명) 40대? 시니어 개발자
수십억, GROUP BY
- Hadoop v1
- Hive
음.. 일단 몇시간 내로 나오긴 나오네!
그게 어디야. 세상 좋아졌네~ 껄껄껄
수백억건, GROUP BY, 실시간
- Hadoop
- Hive는 너무 느려! 데싸님들의 높아진 눈높이
- Spark + Zeppelin. 노트북
- Elastic Search
- Apache Kylin
- Google Dremel
- 컬럼 Oriented, 실행 트리
- Apache Drill
- Impala + Kudu
- Druid
빅데이터 처리
관점으로의 OLAP
Interactive OLAP
의 패러다임
실시간 빅데이터 OLAP, HOW?
- 열라 빨리 읽어 열라 빠르게 처리한다.
- 그까이꺼 미리 다 만들어 놓는다.
열라 빨리 읽어 열라 빨리 처리한다.
- 저장은 Column 지향, 인코딩, 샤딩
- 병렬로 최적 실행 트리를 만들어 처리.
- 당연한 장비빨. SSD, 네트웍 장비, 어마무시한 노드수
- CPU Instruction, Memory prefetch
- 쿼리 컴파일
- 확률적 추정, 샘플링
Impala
Impala - Code Gen
Impala, LLVM Query Compile
https://github.com/apache/incubator-impala/blob/master/be/src/exec/partitioned-hash-join-node.cc
Apache Kudu - CPU Instruction
난 둘다 지롱
- Druid
- 샘플링! 표본으로 모집단 추정. 참값과 달라도 쇠고랑 차지 않아요.
재 방문률
타겟팅 유효율
Top 1000
유니크 방문자. 1 2314 1212 vs 1 1841 5123
증감
그까이꺼 미리 다 만들어 놓는다
- 데이터 큐브
- 전날 배치를 돌려 모든 조합을 만들어 놓는다.
8개월간의 사투
- ㅋㅋㅋㅋ 야이씨 데이터가 많은데 그걸 빨리 읽어서 처리? ㅋㅋㅋㅋㅋ
카일린 고고
- 흠.. 혹시나… Impala + Kudu 어때?
오.. 괜찮네. 몇개는 역시 한계가 있는 건가.
- 음?? Druid! 괜찮네.. Impala + Kudu 한계까지 커버 하네!
- 현재 Druid로 새로 꾸리는 중...
자, 시작합니다. 카일린(키린도 맞아요)
Tomcat + Spring
+ Calcite
HBaseHive
카프카
스팍
스트리밍
스팍
스트리밍
엘라스틱
서치
Parquet
스팍
스팍 SQL
Parquet Hive
Kylin
Query
실시간
배치
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 ㄷㄷ 근데 하루 치 ㄷㄷㄷㄷㄷㄷㄷ
카일린 당신이란 사람은 대체 ㄷㄷㄷㄷ
디멘션 프루닝
- Aggregation Group
- Mandatory
- Hierarchy
- Joint
- Derived
필요 없는 조합은 만들지 않는다.
But 현실에서는 ...
데싸 : 나는 Store 디멘션은 필요 없어 ㅎㅎㅎㅎ
데엔 : 아 그래요? 그럼 Store 빼놓고 큐브 빌드
할게요 ㅎㅎㅎㅎ
데싸 : 그래 ㅎㅎㅎㅎ
1주일 뒤
데싸 : Store별로 보는게 나을 것 같습니다.
데엔 : 데싸 당신이란 사람은 대체 ...
불필요한 Store 디멘션은 빼고 큐브 빌드
네, 제가 해보겠습니다.
D2에 DockerFile만들어 놨어요
http://d2.naver.com/helloworld/1057065
Kylin Insight
- 디멘션 프루닝
- 인코딩
- 큐브 빌드 알고리즘
- 데이터 큐브 On Hadoop
- 샘플링
- 샤딩
부족했던 점
- 데이터는 무럭무럭 자란다. 스키마 에볼루션?
쿼리가 고정된 경우에는 적합하지만
어떤 쿼리가 들어올지 모르는 상황에서는 유즈케이스가 안맞는 것 같다.
- 실시간 처리
- 큐브 병합. 주별, 월별이 아닌 n일치로 병합
그러니까 1월 + 2월분이 섞이게 된다.
- 헤비 쿼리를 날리면 HBase 왜 니가 죽냐...
QnA

More Related Content

What's hot

Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습
동현 강
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
NAVER D2
 
Design cube in Apache Kylin
Design cube in Apache KylinDesign cube in Apache Kylin
Design cube in Apache Kylin
Yang Li
 
Ceph
CephCeph
Cloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflakeCloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflake
SANG WON PARK
 
第一次Elasticsearch就上手
第一次Elasticsearch就上手第一次Elasticsearch就上手
第一次Elasticsearch就上手
Aaron King
 
Apache Kylin – Cubes on Hadoop
Apache Kylin – Cubes on HadoopApache Kylin – Cubes on Hadoop
Apache Kylin – Cubes on Hadoop
DataWorks Summit
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
NAVER D2
 
Ask the expert AEM Assets best practices 092016
Ask the expert  AEM Assets best practices 092016Ask the expert  AEM Assets best practices 092016
Ask the expert AEM Assets best practices 092016
AdobeMarketingCloud
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomy
Dongmin Yu
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
Hyojun Jeon
 
AWS EMR Cost optimization
AWS EMR Cost optimizationAWS EMR Cost optimization
AWS EMR Cost optimization
SANG WON PARK
 
How to Actually Tune Your Spark Jobs So They Work
How to Actually Tune Your Spark Jobs So They WorkHow to Actually Tune Your Spark Jobs So They Work
How to Actually Tune Your Spark Jobs So They Work
Ilya Ganelin
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리
Jeong-gyu Kim
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
NAVER D2
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Yongho Ha
 
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
Yongho Ha
 
elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리
Junyi Song
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lake
DaeMyung Kang
 
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
CONNECT FOUNDATION
 

What's hot (20)

Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습
 
[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영[215]네이버콘텐츠통계서비스소개 김기영
[215]네이버콘텐츠통계서비스소개 김기영
 
Design cube in Apache Kylin
Design cube in Apache KylinDesign cube in Apache Kylin
Design cube in Apache Kylin
 
Ceph
CephCeph
Ceph
 
Cloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflakeCloud DW technology trends and considerations for enterprises to apply snowflake
Cloud DW technology trends and considerations for enterprises to apply snowflake
 
第一次Elasticsearch就上手
第一次Elasticsearch就上手第一次Elasticsearch就上手
第一次Elasticsearch就上手
 
Apache Kylin – Cubes on Hadoop
Apache Kylin – Cubes on HadoopApache Kylin – Cubes on Hadoop
Apache Kylin – Cubes on Hadoop
 
[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화[2D1]Elasticsearch 성능 최적화
[2D1]Elasticsearch 성능 최적화
 
Ask the expert AEM Assets best practices 092016
Ask the expert  AEM Assets best practices 092016Ask the expert  AEM Assets best practices 092016
Ask the expert AEM Assets best practices 092016
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomy
 
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
 
AWS EMR Cost optimization
AWS EMR Cost optimizationAWS EMR Cost optimization
AWS EMR Cost optimization
 
How to Actually Tune Your Spark Jobs So They Work
How to Actually Tune Your Spark Jobs So They WorkHow to Actually Tune Your Spark Jobs So They Work
How to Actually Tune Your Spark Jobs So They Work
 
Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리Spark로 알아보는 빅데이터 처리
Spark로 알아보는 빅데이터 처리
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
 
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?어떻게 하면 데이터 사이언티스트가 될 수 있나요?
어떻게 하면 데이터 사이언티스트가 될 수 있나요?
 
elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리elasticsearch_적용 및 활용_정리
elasticsearch_적용 및 활용_정리
 
Data pipeline and data lake
Data pipeline and data lakeData pipeline and data lake
Data pipeline and data lake
 
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
 

카일린 Kylin, OLAP on hadoop

  • 1. Apache Kylin 하둡 기반의 데이터 큐브 시스템
  • 2. OLAP OLAP 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
  • 3. 보고자 하는 것 - 남자가 봐? 여자가 봐? -> 성별로 조회수 - 어느 지역에서 검색어 추이가 어때 -> 지역별, 시간별 검색 횟수 - 남자 10대 ~ 20대 타겟 개인화를 하려 하는데 .. -> 성별, 연령별, 시간별 체류 시간 SELECT `gender`, `age`, `location`, 조회수, 검색 횟수, 체류 시간 FROM 데이터_마트 WHERE 아웃라이어 제거 조건 GROUP BY `gender`, `age`, `location` HAVING 유의미한 지표 필터링
  • 4. 문제는 데이터 사이즈 - 엑셀 - RDB, Netezza - 데이터 마트 - Star Schema “내가 해봤는데, 하루 100만건 까지는 지지고 볶고 하면 되겠는데 아 그래, 좀 크게 잡아서 3~4백만건까지는 OK. 근데 그 이상은 좀 힘들더라 근데 커팅 형님이 도와줬지 ㅎㅎㅎ” 김철수(가명) 40대? 시니어 개발자
  • 6. 그때는 OLAP 쿼리 토요일날 돌려놓고 퇴근했어 그리고 월요일 아침정도에 거의 끝나거덩 그러면 그거 정리해서 오후에 리포팅 했지 껄껄껄 ... 김민수(가명) 40대? 시니어 개발자
  • 7. 수십억, GROUP BY - Hadoop v1 - Hive 음.. 일단 몇시간 내로 나오긴 나오네! 그게 어디야. 세상 좋아졌네~ 껄껄껄
  • 8. 수백억건, GROUP BY, 실시간 - Hadoop - Hive는 너무 느려! 데싸님들의 높아진 눈높이 - Spark + Zeppelin. 노트북 - Elastic Search - Apache Kylin - Google Dremel - 컬럼 Oriented, 실행 트리 - Apache Drill - Impala + Kudu - Druid 빅데이터 처리 관점으로의 OLAP Interactive OLAP 의 패러다임
  • 9. 실시간 빅데이터 OLAP, HOW? - 열라 빨리 읽어 열라 빠르게 처리한다. - 그까이꺼 미리 다 만들어 놓는다.
  • 10. 열라 빨리 읽어 열라 빨리 처리한다. - 저장은 Column 지향, 인코딩, 샤딩 - 병렬로 최적 실행 트리를 만들어 처리. - 당연한 장비빨. SSD, 네트웍 장비, 어마무시한 노드수 - CPU Instruction, Memory prefetch - 쿼리 컴파일 - 확률적 추정, 샘플링
  • 13. Impala, LLVM Query Compile https://github.com/apache/incubator-impala/blob/master/be/src/exec/partitioned-hash-join-node.cc
  • 14. Apache Kudu - CPU Instruction
  • 15. 난 둘다 지롱 - Druid - 샘플링! 표본으로 모집단 추정. 참값과 달라도 쇠고랑 차지 않아요. 재 방문률 타겟팅 유효율 Top 1000 유니크 방문자. 1 2314 1212 vs 1 1841 5123 증감
  • 16.
  • 17. 그까이꺼 미리 다 만들어 놓는다 - 데이터 큐브 - 전날 배치를 돌려 모든 조합을 만들어 놓는다.
  • 18. 8개월간의 사투 - ㅋㅋㅋㅋ 야이씨 데이터가 많은데 그걸 빨리 읽어서 처리? ㅋㅋㅋㅋㅋ 카일린 고고 - 흠.. 혹시나… Impala + Kudu 어때? 오.. 괜찮네. 몇개는 역시 한계가 있는 건가. - 음?? Druid! 괜찮네.. Impala + Kudu 한계까지 커버 하네! - 현재 Druid로 새로 꾸리는 중...
  • 20. Tomcat + Spring + Calcite HBaseHive
  • 22. 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 ㄷㄷ 근데 하루 치 ㄷㄷㄷㄷㄷㄷㄷ 카일린 당신이란 사람은 대체 ㄷㄷㄷㄷ
  • 23. 디멘션 프루닝 - Aggregation Group - Mandatory - Hierarchy - Joint - Derived 필요 없는 조합은 만들지 않는다.
  • 24. But 현실에서는 ... 데싸 : 나는 Store 디멘션은 필요 없어 ㅎㅎㅎㅎ 데엔 : 아 그래요? 그럼 Store 빼놓고 큐브 빌드 할게요 ㅎㅎㅎㅎ 데싸 : 그래 ㅎㅎㅎㅎ 1주일 뒤 데싸 : Store별로 보는게 나을 것 같습니다. 데엔 : 데싸 당신이란 사람은 대체 ... 불필요한 Store 디멘션은 빼고 큐브 빌드
  • 25. 네, 제가 해보겠습니다. D2에 DockerFile만들어 놨어요 http://d2.naver.com/helloworld/1057065
  • 26. Kylin Insight - 디멘션 프루닝 - 인코딩 - 큐브 빌드 알고리즘 - 데이터 큐브 On Hadoop - 샘플링 - 샤딩
  • 27. 부족했던 점 - 데이터는 무럭무럭 자란다. 스키마 에볼루션? 쿼리가 고정된 경우에는 적합하지만 어떤 쿼리가 들어올지 모르는 상황에서는 유즈케이스가 안맞는 것 같다. - 실시간 처리 - 큐브 병합. 주별, 월별이 아닌 n일치로 병합 그러니까 1월 + 2월분이 섞이게 된다. - 헤비 쿼리를 날리면 HBase 왜 니가 죽냐...
  • 28. QnA