SlideShare a Scribd company logo
Introduction to Apache Tajo
정재화 수석 연구원 / 그루터
About me
• Gruter Corp / BigData Engineer
• Apache Tajo Committer
• jhjung@gruter.com
• Home Page: http://blrunner.com
• Twitter: @blrunner78
• The author of Hadoop book
목차
1. Tajo 개요
2. 핵심 기능
3. Tajo vs Spark
4. 벤치마크 결과
5. 로드맵
6. 적용 사례
1. Tajo 개요
5
1.1 Tajo란?
• 하둡 기반의 빅데이터 웨어하우스 시스템
• 2013년 아파치 인큐베이션, 2014년 아파치 탑레벨 프로젝트
• ANSI SQL 지원
• 주요 특징
– 자체 고성능 분산 처리 엔진 (Not MapReduce)
– 다양한 쿼리 최적화 기법 및 알고리즘 적용
– 수시간 이상 실행되는 ETL 쿼리 지원
– 수백 밀리세컨드 이내 실행되는 인터랙티브 쿼리 지원
6
1.2 Tajo 아키텍처
Master Server (HA)
Client
JDBC TSql Web UI
CatalogStore
DBMS
HiveMetastor
e
Submit a Query
Manage metadata
Allocate a query
Send task
& monitor
Send task
& monitor
Slave Server
TajoWorker
QueryMaster
Local
FileSystem
HDFS
Local Query
Engine
StorageManager
Slave Server
TajoWorker
QueryMaster
Local
FileSystem
HDFS
Local Query
Engine
StorageManager
Slave Server
TajoWorker
QueryMaster
Local
FileSystem
HDFS
Local Query
Engine
StorageManager
TajoMaster
TajoMaster
7
1.3 Tajo 비교우위
• ANSI SQL 지원
- 학습비용 최소화 및 기존 시스템의 전환 용이
- 비표준 SQL의 경우, Oracle과 PostgreSQL을 참고
• 클러스터 확장성
- 수천대 노드까지 확장 가능함
• 고성능 분산 처리 엔진
- 스캔속도: 물리적 디스크당 100MB/sec (SATA 기준)
- 1TB를 10 여대의 노드로 처리
 간단한 aggregation 쿼리: 30초 ~ 1분 내외
 간단한 join 쿼리: 1 ~ 2 분 내외
 복잡한 join 및 distinct aggregation : 수 분에서 10여분
2. 핵심 기능
9
2.1 SQL 성숙도
자체 분산 처리 엔진을 이용하여, 상당수 쿼리 분산 실행 지원
기존 데이터 타입 및 파일 포맷과 호환
• 질의 분산 처리
- Inner join, and left/right/full outer join
- Groupby, sort, multiple distinct aggregation
- window function
• SQL 데이터 타입
- CHAR, BOOL, INT, DOUBLE, TEXT, DATE, Etc
• 다양한 파일 포맷
- Text file (CSV), SequenceFile, RCFile, ORC, Parquet, Avro
10
2.2 쿼리 최적화
• Cost-based Join Optimization (Greedy Heuristic)
- 사용자가 최선의 Join 순서를 추측하는 수고 제거
• 확장 가능한 rewrite rule 엔진
- rewrite rule 인터페이스 제공과 다양한 유틸리티 제공
• 점진적 쿼리 최적화 (Progressive Query Optimization)
- 실행 시간 통계 수집
- 분산 정렬을 위한 범위 분할 (range partitioning)의 적절한 파티션 범위, 개수 등을
런타임에 조정
- 분산 Join, 그룹바이를 위한 파티션 개수를 런타임에 조정
11
2.3 파티션 테이블
• 파티션 테이블 생성문
CREATE TABLE student (
id INT,
name TEXT,
grade TEXT
) USING PARQUET
PARTITION BY COLUMN (country TEXT, city TEXT);
/tajo/warehouse/student/country=KOREA/city=SEOUL/
/tajo/warehouse/student/country=KOREA/city=PUSAN/
/tajo/warehouse/student/country=KOREA/city=INCHEON/
/tajo/warehouse/student/country=USA/city=NEWYORK/
/tajo/warehouse/student/country=USA/city=BOSTON/
. . .
Hive 호환성 지원을 위한 Column Value 방식의 테이블 파티션 지원
• 디렉터리 구성
• 향후 Range 파티션 지원 예정
12
2.4 쿼리 페더레이션(Federation) 및 테이블스페이스 지
원
• 다양한 데이터 소스간의 Join 및 Union 쿼리 처리 지원
• 장점
- 데이터 마이그레이션 : RDBMS  하둡
- 기존 RBMS 데이터와 하둡 데이터의 Join 쿼리 처리
- SQL를 이용한 NoSQL 및 다양한 스토리지 (S3, Swift, HBase, ElasticSearch, Kafka)
- SQL 도구를 이용한 인터페이스 표준화
HDFS NoSQL S3 Swift
Tajo
13
2.5 Nested 및 JSON 포맷 지원
별도 가공없이 Nested 및 JSON 포맷 파일의 SQL 처리 가능
입력 데이터
테이블 정의
SQL 문
14
2.6 UDF 지원
> SELECT pow(col1, col2), col3, col4, … FROM orders, …
@Override
public Datum eval(Tuple params) {
Datum value1Datum = params.get(0);
Datum value2Datum = params.get(1);
if(value1Datum instanceof NullDatum || value2Datum instanceof NullDatum) {
return NullDatum.get();
}
return DatumFactory.createFloat8(Math.pow(value1Datum.asFloat8(),
value2Datum.asFloat8()));
}
@ScalarFunction(name="pow", returnType = FLOAT8,paramTypes = {FLOAT8, FLOAT8})
public static double pow(double x, double y) {
return Math.pow(x, y);
}
• 코드 예제 1
• 코드 예제 2
3. Tajo vs Spark
16
3.1 기본 특징 비교
항목 Tajo Spark
정의 데이터웨어하우스 클러스터 연산 플랫폼
리소스 관리 자체 자체 or YARN
스토리지 HDFS, S3, HBase, Swift HDFS, S3, HBase
파일포맷 CSV, RC, ORC, Parquet, Avro CSV, RC, ORC, Parquet, Avro
구현언어 Java Scala
컴퓨팅 특징
데이터는 Disk, 중간 데이터는
Memory/Disk 모두 사용
분석 대상 데이터가 In-Memory
에 로딩
쿼리 레이턴시
Long running batch ,
Interactive
Interactive
17
3.2 SQL 엔진 특징 비교 : Tajo vs Spark SQL
항목 Tajo Spark SQL
쿼리 표준 ANISI SQL
- HiveQL : HiveContext 제공
- ANSI SQL: SQLContext 제공,
하이브 디펜던시 제거
SELECT 쿼리 O O
INSERT INTO 및
CREAT TABLE AS
SELECT 쿼리
O O
Multiple Distinct
Column
O X
Command Line
Interface
TSql
-로컬 및 클러스터 모드 지원
- 별도 데몬 실행 없음
1. 로컬 모드
- Spark SQL CLI
2. 클러스터 모드
- Thrift JDBC 서버 + Beeline
Database
Connectivity
JDBC JDBC, ODBC
4. 벤치마크 결과
19
4.1 클러스터 자원 활용 최적화
인메모리 기반 기술의 메모리 제약을 극복, 안정적인 대용량 처리
1. EC2 인스턴스: c3.4xlarge (vCPU: 16, 메모리: 30GiB, SSD스토리지: 160GB x
2)
2. Tajo 구성: 0.9.1-SNAPSHOT 버전, 1 master, 16 worker
3. 데이터셋: TPC-H 1TB
AWS 벤치마크 결과
0
2000
4000
6000
8000
10000
12000
14000
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22
sec.
hive
presto
spark
tajo
Tajo는 Hive 대비 평균4배, Presto 대비 평균1.5배 빠름.
Spark의 경우, 메모리 제약으로 테스트 진행 불가.
20
4.2 선형적 성능 확장성
데이터 노드를 추가하여 선형적인 용량, 성능 확장
1. EC2 인스턴스: c3.4xlarge (vCPU: 16, 메모리: 30GiB, SSD스토리지: 160GB x 2)
2. Tajo 구성: 0.9.1-SNAPSHOT 버전
3. 데이터셋: TPC-H 1TB
AWS 벤치마크 결과
0
1000
2000
3000
4000
5000
6000
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22
sec.
16 workers
8 workers
4 workers
4 -> 8대로 증가시 1.6배 이상 성능 향상
4 -> 16대로 증가시 2.4배 이상 성능 향상
실제 프러덕션 환경에서 500대 규모까지 확장 경험
5. 로드맵
22
5.1 0.11.0 버전
• 릴리즈 : 2015년 9월 예정
• 핵심 기능
① 멀티테넌시(Multi-tenancy) 스케쥴러
② 테이블스페이스
③ Nested 포맷 지원
④ IN 서브쿼리 지원
⑤ ALTER TABLE ADD/DROP PARTITION 지원
⑥ ORC 포맷 지원
⑦ 파이썬 UDF/UDAF 지원
23
5.2 0.11.0 이후 로드맵
① YARN 지원
② 사용자 인증 지원
③ Scalar 및 Exist 서브쿼리 지원
④ 자바 스크립트 기반 Stored Procedure 지원
⑤ 내고장성 (Fault Tolerance)
⑥ 하이브 UDF 호환
⑦ Map 타입 및 Array 타입 지원
⑧ 스키마리스(Schema-less) 데이터 포맷 지원
⑨ WITH 절 지원
⑩ 파이썬 및 C++ 클라이언트 지원
6. 적용 사례
25
6.1 상용 DW 대체 사례
SK텔레콤은 기존 상용 DW를 Tajo로 대체한 후, DW와 Data Mart로 활용
• ETL Processing: 120+ queries, ~4TB read/day
• OLAP Processing: 500+ queries
Operational
Systems
Integration
Layer
Data Warehouse
Data Mart
Marketing
Sales
ERP
SCM
ODS
Staging
Area Strategic
Marts
Data
Vault
26
6.2 스타트업 코호트(Cohort) 분석 사례
스마트폰 잠금화면에 리워드형 광고 서비스 앱 개발사 : Locket
EC2 c3.2xlarge 인스턴스 10개로 수십GB 로그를 약 40초 동안 데이터 처리
 총 비용 : 0.420 * 10 = 4.20 달러 (한화: 4898.5원)
Amazon EC2 Cloud
Tajo Cluster
TajoWorker
TajoMaster TajoWorker
TajoWorker
TajoWorker
S3
Source Data Tajo Tables
RDS
MySQL
1. 배치 실행
2. 로그 파일 기반
external 테이블 생성
3. Cohort 분석 쿼리 수행
4. 쿼리 수행 결과 저장
5. 통계 데이터 로딩
27
6.3 데스크탑용 분석 엔진
ETL 과정이 필요 없으며, 데이터가 커질 수록 Tajo가 유리
단일 머신에서도 복수 Worker로 분산 처리 가능
• MySQL 데이터 로드(ETL) 시간
0.3 1.5
16.5
179.3
0.4 1.2
10.4
101.5
0.0
50.0
100.0
150.0
200.0
TPC-H 10m 100m 1g 10g
Mysql-5.5
Tajo-0.10
소
요
시
간
(
초
)
데이터 크기
• 쿼리 실행 시간 비교 (TPC-H Q1)
• TPC-H Benchmark 환경
OS : CentOS release 5.7 (x86_64)/ CPU : 3.40GHz 8 core / Mem :32G / Disk : SSD X 2
작은 데이터는 실시간 분석
데이터 크기가 커질수록 Tajo가 유리
28
6.4 다양한 분석 도구와 통합 환경 제공
• JDBC 기반 상용 OLAP 도구: Birst, Spotfire
• JDBC 기반 워크벤치 도구: DbVisualizer, SQLWorkbench J,
Flamingo
• 데이터 사이언스 도구: Zeppelin
• DB 협업툴: 올챙이(Tedpole DB hub)
Welcome to Tajo
1. Homepage: http://tajo.apache.org
2. 한국 타조 사용자 그룹
- 구글 그룹: https://groups.google.com/forum/#!forum/tajo-user-kr
- 페이스북: https://www.facebook.com/groups/tajokorea/
3. 타조 한글 문서화 프로젝트: http://bit.ly/1Ir417T
4. 기타 참고 사이트
- http://www.gruter.com/blog/tag/apache-tajo
- http://teamblog.gruter.com/tag/apache-tajo
- http://blrunner.com/category/Development/Tajo
Q&A
GRUTER: YOUR PARTNER
IN THE BIG DATA REVOLUTION
Phone +82-2-508-5911
Fax +82-2-508-5912
E-mail contact@gruter.com
Web www.gruter.com

More Related Content

PDF
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
PDF
Tajo TPC-H Benchmark Test on AWS
PDF
Big data analysis with R and Apache Tajo (in Korean)
PDF
Data analysis with Tajo
PDF
Expanding Your Data Warehouse with Tajo
PPTX
Vectorized processing in_a_nutshell_DeView2014
PPTX
Tajo and SQL-on-Hadoop in Tech Planet 2013
PPTX
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
스타트업사례로 본 로그 데이터분석 : Tajo on AWS
Tajo TPC-H Benchmark Test on AWS
Big data analysis with R and Apache Tajo (in Korean)
Data analysis with Tajo
Expanding Your Data Warehouse with Tajo
Vectorized processing in_a_nutshell_DeView2014
Tajo and SQL-on-Hadoop in Tech Planet 2013
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom

What's hot (20)

PDF
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
PPTX
Gpdb best practices v a01 20150313
PPTX
빅데이터 구축 사례
PDF
Spark Day 2017@Seoul(Spark Bootcamp)
PDF
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
PPTX
3회 서울 Hadoop 사용자 모임 / 아파치 피닉스
PPTX
Gruter TECHDAY 2014 MelOn BigData
PDF
Spark_Overview_qna
PDF
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
PDF
Hadoop 제주대
PDF
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
PDF
Apache Hive: for business intelligence use and real-time I/O use (Korean)
PDF
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
PDF
Spark 소개 2부
PPTX
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
PDF
실시간 빅 데이터 기술 현황 및 Daum 활용 사례 소개 (2013)
PDF
하둡 좋은약이지만 만병통치약은 아니다
PPTX
Druid+superset
PDF
Spark은 왜 이렇게 유명해지고 있을까?
PDF
Cloudera session seoul - Spark bootcamp
[Pgday.Seoul 2018] Greenplum의 노드 분산 설계
Gpdb best practices v a01 20150313
빅데이터 구축 사례
Spark Day 2017@Seoul(Spark Bootcamp)
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
3회 서울 Hadoop 사용자 모임 / 아파치 피닉스
Gruter TECHDAY 2014 MelOn BigData
Spark_Overview_qna
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Tajo와 SQL-on-Hadoop
Hadoop 제주대
Spark overview 이상훈(SK C&C)_스파크 사용자 모임_20141106
Apache Hive: for business intelligence use and real-time I/O use (Korean)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Spark 소개 2부
[D2 COMMUNITY] Spark User Group - 스파크를 통한 딥러닝 이론과 실제
실시간 빅 데이터 기술 현황 및 Daum 활용 사례 소개 (2013)
하둡 좋은약이지만 만병통치약은 아니다
Druid+superset
Spark은 왜 이렇게 유명해지고 있을까?
Cloudera session seoul - Spark bootcamp
Ad

Viewers also liked (13)

PDF
Expanding Your Data Warehouse with Tajo
PDF
Introduction to Apache Tajo: Data Warehouse for Big Data
PPTX
Elastic Search Performance Optimization - Deview 2014
PDF
Introduction to Apache Tajo: Future of Data Warehouse
PDF
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 보안 로그 분석을 위한 빅데이터 시스템 구축 사례
PPTX
SKT 신사업모델 4팀 2주차 Output
PDF
MelOn 빅데이터 플랫폼과 Tajo 이야기
PDF
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
PDF
협업도구 및 주요 Agile practices 적용사례 v1.0
PDF
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: GRUTER의 빅데이터 플랫폼 및 전략 소개
PDF
SPARK SQL
PDF
Structuring Apache Spark 2.0: SQL, DataFrames, Datasets And Streaming - by Mi...
PPTX
Hive on spark is blazing fast or is it final
Expanding Your Data Warehouse with Tajo
Introduction to Apache Tajo: Data Warehouse for Big Data
Elastic Search Performance Optimization - Deview 2014
Introduction to Apache Tajo: Future of Data Warehouse
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 보안 로그 분석을 위한 빅데이터 시스템 구축 사례
SKT 신사업모델 4팀 2주차 Output
MelOn 빅데이터 플랫폼과 Tajo 이야기
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 인터넷 쇼핑몰의 실시간 분석 플랫폼 구축 사례
협업도구 및 주요 Agile practices 적용사례 v1.0
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: GRUTER의 빅데이터 플랫폼 및 전략 소개
SPARK SQL
Structuring Apache Spark 2.0: SQL, DataFrames, Datasets And Streaming - by Mi...
Hive on spark is blazing fast or is it final
Ad

Similar to Introduction to Apache Tajo (20)

PDF
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
PPTX
Tajo korea meetup oct 2015-spatial tajo
 
PDF
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
PDF
2020년 10월 24일 개발자 이야기
PDF
[215]네이버콘텐츠통계서비스소개 김기영
PDF
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
PDF
Apache Htrace overview (20160520)
PPTX
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
PDF
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
PPTX
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
PDF
주니어 개발자의 서버 로그 관리 개선기
PPTX
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
PPTX
Spark sql
PDF
지금 핫한 Real-time In-memory Stream Processing 이야기
PDF
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
PDF
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
PDF
Vertica New Features - 8.1에서 9.2까지
PDF
Object storage의 이해와 활용
PDF
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
PDF
Private PaaS with Docker, spring cloud and mesos
스타트업 사례로 본 로그 데이터 분석 : Tajo on AWS
Tajo korea meetup oct 2015-spatial tajo
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
2020년 10월 24일 개발자 이야기
[215]네이버콘텐츠통계서비스소개 김기영
AWS를 통한 빅데이터 기반 비지니스 인텔리전스 구축- AWS Summit Seoul 2017
Apache Htrace overview (20160520)
Bigquery와 airflow를 이용한 데이터 분석 시스템 구축 v1 나무기술(주) 최유석 20170912
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
MSA(Service Mesh), MDA(Data Mesh), MIA(Inference Mesh) 기술동향 소개-박문기@메ᄀ...
주니어 개발자의 서버 로그 관리 개선기
AWS 6월 웨비나 | AWS에서 MS SQL 서버 운영하기 (김민성 솔루션즈아키텍트)
Spark sql
지금 핫한 Real-time In-memory Stream Processing 이야기
Amazon Aurora 성능 향상 및 마이그레이션 모범 사례 - AWS Summit Seoul 2017
데브시스터즈 데이터 레이크 구축 이야기 : Data Lake architecture case study (박주홍 데이터 분석 및 인프라 팀...
Vertica New Features - 8.1에서 9.2까지
Object storage의 이해와 활용
[231]운영체제 수준에서의 데이터베이스 성능 분석과 최적화
Private PaaS with Docker, spring cloud and mesos

More from Gruter (16)

PDF
What's New Tajo 0.10 and Its Beyond
PDF
Efficient In­‐situ Processing of Various Storage Types on Apache Tajo
PDF
Gruter TECHDAY 2014 Realtime Processing in Telco
PDF
Gruter_TECHDAY_2014_04_TajoCloudHandsOn (in Korean)
PPTX
Gruter_TECHDAY_2014_03_ApacheTajo (in Korean)
PDF
Gruter_TECHDAY_2014_01_SearchEngine (in Korean)
PPTX
Apache Tajo - BWC 2014
PPTX
Hadoop security DeView 2014
PPTX
Big Data Camp LA 2014 - Apache Tajo: A Big Data Warehouse System on Hadoop
PPTX
Hadoop Summit 2014: Query Optimization and JIT-based Vectorized Execution in ...
PDF
Cloumon sw제품설명회 발표자료
PDF
Tajo case study bay area hug 20131105
PDF
Apache Tajo - Bay Area HUG Nov. 2013 LinkedIn Special Event
PPTX
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
PDF
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 온라인 컨텐츠 서비스를 위한 빅데이터 구축 사례
PDF
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Bioinformatics Data를 위한 Hadoop기반...
What's New Tajo 0.10 and Its Beyond
Efficient In­‐situ Processing of Various Storage Types on Apache Tajo
Gruter TECHDAY 2014 Realtime Processing in Telco
Gruter_TECHDAY_2014_04_TajoCloudHandsOn (in Korean)
Gruter_TECHDAY_2014_03_ApacheTajo (in Korean)
Gruter_TECHDAY_2014_01_SearchEngine (in Korean)
Apache Tajo - BWC 2014
Hadoop security DeView 2014
Big Data Camp LA 2014 - Apache Tajo: A Big Data Warehouse System on Hadoop
Hadoop Summit 2014: Query Optimization and JIT-based Vectorized Execution in ...
Cloumon sw제품설명회 발표자료
Tajo case study bay area hug 20131105
Apache Tajo - Bay Area HUG Nov. 2013 LinkedIn Special Event
DeView2013 Big Data Platform Architecture with Hadoop - Hyeong-jun Kim
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: 온라인 컨텐츠 서비스를 위한 빅데이터 구축 사례
GRUTER가 들려주는 Big Data Platform 구축 전략과 적용 사례: Bioinformatics Data를 위한 Hadoop기반...

Introduction to Apache Tajo

  • 1. Introduction to Apache Tajo 정재화 수석 연구원 / 그루터
  • 2. About me • Gruter Corp / BigData Engineer • Apache Tajo Committer • jhjung@gruter.com • Home Page: http://blrunner.com • Twitter: @blrunner78 • The author of Hadoop book
  • 3. 목차 1. Tajo 개요 2. 핵심 기능 3. Tajo vs Spark 4. 벤치마크 결과 5. 로드맵 6. 적용 사례
  • 5. 5 1.1 Tajo란? • 하둡 기반의 빅데이터 웨어하우스 시스템 • 2013년 아파치 인큐베이션, 2014년 아파치 탑레벨 프로젝트 • ANSI SQL 지원 • 주요 특징 – 자체 고성능 분산 처리 엔진 (Not MapReduce) – 다양한 쿼리 최적화 기법 및 알고리즘 적용 – 수시간 이상 실행되는 ETL 쿼리 지원 – 수백 밀리세컨드 이내 실행되는 인터랙티브 쿼리 지원
  • 6. 6 1.2 Tajo 아키텍처 Master Server (HA) Client JDBC TSql Web UI CatalogStore DBMS HiveMetastor e Submit a Query Manage metadata Allocate a query Send task & monitor Send task & monitor Slave Server TajoWorker QueryMaster Local FileSystem HDFS Local Query Engine StorageManager Slave Server TajoWorker QueryMaster Local FileSystem HDFS Local Query Engine StorageManager Slave Server TajoWorker QueryMaster Local FileSystem HDFS Local Query Engine StorageManager TajoMaster TajoMaster
  • 7. 7 1.3 Tajo 비교우위 • ANSI SQL 지원 - 학습비용 최소화 및 기존 시스템의 전환 용이 - 비표준 SQL의 경우, Oracle과 PostgreSQL을 참고 • 클러스터 확장성 - 수천대 노드까지 확장 가능함 • 고성능 분산 처리 엔진 - 스캔속도: 물리적 디스크당 100MB/sec (SATA 기준) - 1TB를 10 여대의 노드로 처리  간단한 aggregation 쿼리: 30초 ~ 1분 내외  간단한 join 쿼리: 1 ~ 2 분 내외  복잡한 join 및 distinct aggregation : 수 분에서 10여분
  • 9. 9 2.1 SQL 성숙도 자체 분산 처리 엔진을 이용하여, 상당수 쿼리 분산 실행 지원 기존 데이터 타입 및 파일 포맷과 호환 • 질의 분산 처리 - Inner join, and left/right/full outer join - Groupby, sort, multiple distinct aggregation - window function • SQL 데이터 타입 - CHAR, BOOL, INT, DOUBLE, TEXT, DATE, Etc • 다양한 파일 포맷 - Text file (CSV), SequenceFile, RCFile, ORC, Parquet, Avro
  • 10. 10 2.2 쿼리 최적화 • Cost-based Join Optimization (Greedy Heuristic) - 사용자가 최선의 Join 순서를 추측하는 수고 제거 • 확장 가능한 rewrite rule 엔진 - rewrite rule 인터페이스 제공과 다양한 유틸리티 제공 • 점진적 쿼리 최적화 (Progressive Query Optimization) - 실행 시간 통계 수집 - 분산 정렬을 위한 범위 분할 (range partitioning)의 적절한 파티션 범위, 개수 등을 런타임에 조정 - 분산 Join, 그룹바이를 위한 파티션 개수를 런타임에 조정
  • 11. 11 2.3 파티션 테이블 • 파티션 테이블 생성문 CREATE TABLE student ( id INT, name TEXT, grade TEXT ) USING PARQUET PARTITION BY COLUMN (country TEXT, city TEXT); /tajo/warehouse/student/country=KOREA/city=SEOUL/ /tajo/warehouse/student/country=KOREA/city=PUSAN/ /tajo/warehouse/student/country=KOREA/city=INCHEON/ /tajo/warehouse/student/country=USA/city=NEWYORK/ /tajo/warehouse/student/country=USA/city=BOSTON/ . . . Hive 호환성 지원을 위한 Column Value 방식의 테이블 파티션 지원 • 디렉터리 구성 • 향후 Range 파티션 지원 예정
  • 12. 12 2.4 쿼리 페더레이션(Federation) 및 테이블스페이스 지 원 • 다양한 데이터 소스간의 Join 및 Union 쿼리 처리 지원 • 장점 - 데이터 마이그레이션 : RDBMS  하둡 - 기존 RBMS 데이터와 하둡 데이터의 Join 쿼리 처리 - SQL를 이용한 NoSQL 및 다양한 스토리지 (S3, Swift, HBase, ElasticSearch, Kafka) - SQL 도구를 이용한 인터페이스 표준화 HDFS NoSQL S3 Swift Tajo
  • 13. 13 2.5 Nested 및 JSON 포맷 지원 별도 가공없이 Nested 및 JSON 포맷 파일의 SQL 처리 가능 입력 데이터 테이블 정의 SQL 문
  • 14. 14 2.6 UDF 지원 > SELECT pow(col1, col2), col3, col4, … FROM orders, … @Override public Datum eval(Tuple params) { Datum value1Datum = params.get(0); Datum value2Datum = params.get(1); if(value1Datum instanceof NullDatum || value2Datum instanceof NullDatum) { return NullDatum.get(); } return DatumFactory.createFloat8(Math.pow(value1Datum.asFloat8(), value2Datum.asFloat8())); } @ScalarFunction(name="pow", returnType = FLOAT8,paramTypes = {FLOAT8, FLOAT8}) public static double pow(double x, double y) { return Math.pow(x, y); } • 코드 예제 1 • 코드 예제 2
  • 15. 3. Tajo vs Spark
  • 16. 16 3.1 기본 특징 비교 항목 Tajo Spark 정의 데이터웨어하우스 클러스터 연산 플랫폼 리소스 관리 자체 자체 or YARN 스토리지 HDFS, S3, HBase, Swift HDFS, S3, HBase 파일포맷 CSV, RC, ORC, Parquet, Avro CSV, RC, ORC, Parquet, Avro 구현언어 Java Scala 컴퓨팅 특징 데이터는 Disk, 중간 데이터는 Memory/Disk 모두 사용 분석 대상 데이터가 In-Memory 에 로딩 쿼리 레이턴시 Long running batch , Interactive Interactive
  • 17. 17 3.2 SQL 엔진 특징 비교 : Tajo vs Spark SQL 항목 Tajo Spark SQL 쿼리 표준 ANISI SQL - HiveQL : HiveContext 제공 - ANSI SQL: SQLContext 제공, 하이브 디펜던시 제거 SELECT 쿼리 O O INSERT INTO 및 CREAT TABLE AS SELECT 쿼리 O O Multiple Distinct Column O X Command Line Interface TSql -로컬 및 클러스터 모드 지원 - 별도 데몬 실행 없음 1. 로컬 모드 - Spark SQL CLI 2. 클러스터 모드 - Thrift JDBC 서버 + Beeline Database Connectivity JDBC JDBC, ODBC
  • 19. 19 4.1 클러스터 자원 활용 최적화 인메모리 기반 기술의 메모리 제약을 극복, 안정적인 대용량 처리 1. EC2 인스턴스: c3.4xlarge (vCPU: 16, 메모리: 30GiB, SSD스토리지: 160GB x 2) 2. Tajo 구성: 0.9.1-SNAPSHOT 버전, 1 master, 16 worker 3. 데이터셋: TPC-H 1TB AWS 벤치마크 결과 0 2000 4000 6000 8000 10000 12000 14000 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec. hive presto spark tajo Tajo는 Hive 대비 평균4배, Presto 대비 평균1.5배 빠름. Spark의 경우, 메모리 제약으로 테스트 진행 불가.
  • 20. 20 4.2 선형적 성능 확장성 데이터 노드를 추가하여 선형적인 용량, 성능 확장 1. EC2 인스턴스: c3.4xlarge (vCPU: 16, 메모리: 30GiB, SSD스토리지: 160GB x 2) 2. Tajo 구성: 0.9.1-SNAPSHOT 버전 3. 데이터셋: TPC-H 1TB AWS 벤치마크 결과 0 1000 2000 3000 4000 5000 6000 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 sec. 16 workers 8 workers 4 workers 4 -> 8대로 증가시 1.6배 이상 성능 향상 4 -> 16대로 증가시 2.4배 이상 성능 향상 실제 프러덕션 환경에서 500대 규모까지 확장 경험
  • 22. 22 5.1 0.11.0 버전 • 릴리즈 : 2015년 9월 예정 • 핵심 기능 ① 멀티테넌시(Multi-tenancy) 스케쥴러 ② 테이블스페이스 ③ Nested 포맷 지원 ④ IN 서브쿼리 지원 ⑤ ALTER TABLE ADD/DROP PARTITION 지원 ⑥ ORC 포맷 지원 ⑦ 파이썬 UDF/UDAF 지원
  • 23. 23 5.2 0.11.0 이후 로드맵 ① YARN 지원 ② 사용자 인증 지원 ③ Scalar 및 Exist 서브쿼리 지원 ④ 자바 스크립트 기반 Stored Procedure 지원 ⑤ 내고장성 (Fault Tolerance) ⑥ 하이브 UDF 호환 ⑦ Map 타입 및 Array 타입 지원 ⑧ 스키마리스(Schema-less) 데이터 포맷 지원 ⑨ WITH 절 지원 ⑩ 파이썬 및 C++ 클라이언트 지원
  • 25. 25 6.1 상용 DW 대체 사례 SK텔레콤은 기존 상용 DW를 Tajo로 대체한 후, DW와 Data Mart로 활용 • ETL Processing: 120+ queries, ~4TB read/day • OLAP Processing: 500+ queries Operational Systems Integration Layer Data Warehouse Data Mart Marketing Sales ERP SCM ODS Staging Area Strategic Marts Data Vault
  • 26. 26 6.2 스타트업 코호트(Cohort) 분석 사례 스마트폰 잠금화면에 리워드형 광고 서비스 앱 개발사 : Locket EC2 c3.2xlarge 인스턴스 10개로 수십GB 로그를 약 40초 동안 데이터 처리  총 비용 : 0.420 * 10 = 4.20 달러 (한화: 4898.5원) Amazon EC2 Cloud Tajo Cluster TajoWorker TajoMaster TajoWorker TajoWorker TajoWorker S3 Source Data Tajo Tables RDS MySQL 1. 배치 실행 2. 로그 파일 기반 external 테이블 생성 3. Cohort 분석 쿼리 수행 4. 쿼리 수행 결과 저장 5. 통계 데이터 로딩
  • 27. 27 6.3 데스크탑용 분석 엔진 ETL 과정이 필요 없으며, 데이터가 커질 수록 Tajo가 유리 단일 머신에서도 복수 Worker로 분산 처리 가능 • MySQL 데이터 로드(ETL) 시간 0.3 1.5 16.5 179.3 0.4 1.2 10.4 101.5 0.0 50.0 100.0 150.0 200.0 TPC-H 10m 100m 1g 10g Mysql-5.5 Tajo-0.10 소 요 시 간 ( 초 ) 데이터 크기 • 쿼리 실행 시간 비교 (TPC-H Q1) • TPC-H Benchmark 환경 OS : CentOS release 5.7 (x86_64)/ CPU : 3.40GHz 8 core / Mem :32G / Disk : SSD X 2 작은 데이터는 실시간 분석 데이터 크기가 커질수록 Tajo가 유리
  • 28. 28 6.4 다양한 분석 도구와 통합 환경 제공 • JDBC 기반 상용 OLAP 도구: Birst, Spotfire • JDBC 기반 워크벤치 도구: DbVisualizer, SQLWorkbench J, Flamingo • 데이터 사이언스 도구: Zeppelin • DB 협업툴: 올챙이(Tedpole DB hub)
  • 29. Welcome to Tajo 1. Homepage: http://tajo.apache.org 2. 한국 타조 사용자 그룹 - 구글 그룹: https://groups.google.com/forum/#!forum/tajo-user-kr - 페이스북: https://www.facebook.com/groups/tajokorea/ 3. 타조 한글 문서화 프로젝트: http://bit.ly/1Ir417T 4. 기타 참고 사이트 - http://www.gruter.com/blog/tag/apache-tajo - http://teamblog.gruter.com/tag/apache-tajo - http://blrunner.com/category/Development/Tajo
  • 30. Q&A
  • 31. GRUTER: YOUR PARTNER IN THE BIG DATA REVOLUTION Phone +82-2-508-5911 Fax +82-2-508-5912 E-mail contact@gruter.com Web www.gruter.com

Editor's Notes

  • #18: Join 처리 Join 최적화 지원, 다양한 방식의 Join 지원 Join 최적화 미지원, Hash Join 지원