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
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
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