Presto,	Zeppelin 을 이용한
초간단 BI 구축 사례
김형준
2016.06
김형준(babokim)
JOBPLANET
Bigdata,	Tajo	(Gruter)
Hadoop,	Neptune,	Naver Mail	(Naver)
공공 SI,	전자 ITO	(SDS)
www.jaso.co.kr
Open	source
Apache	Tajo
Naver Neptune
Jobplanet
기업의 리뷰,	연봉, 인터뷰, 채용 정보 제공
• 2014년 서비스 오픈
• 약 60	만개의 기업 리뷰, 연봉
인터뷰 정보 제공
• 한국, 인도네시아, 대만 서비스 중,
다수 국가 확장 진행중
(한국, 인도네시아 점유율 1위)
Image:	http://www.brainlazy.com/article/random-nonsense/over-engineered/
이런게 좋아요!
데이터를 필요로 하는 사람이 직접 데이터를 볼 수
있으면 좋겠어요.	
개발자들 너무 바빠서 부탁하기에 눈치 보여요.
여러 데이터를 조합해서 볼 수 있으면 좋겠어요.
전체 데이터를 볼 수 있으면 좋겠어요.
쉽고 빨랐으면 좋겠어요.
무엇보다도 Data	보안이 가장 중요해요.
이런거는 필요 없어요!
멋진 챠트나 그래프는 있으면 좋지만 아직 필요
없어요.
엑셀이면 충분해요.
실시간으로 분석할 필요는 없지만 점차 필요하겠죠.
Not	Data	Analytics,
But	Data	Exploration
처음에는,
가장 Simple(?)한 구성은?
Structured
Query
Language
Database Workbench
SQL
Database
(HDFS,	S3	등)
SQL-on-Hadoop Workbench
Simple	and	Fast,	But...
Not	End-user	friendly
ES	data	only
Out	Of	Memory
실제는,
로그 수집 및 저장이 우선
좋다고들 하는데 선뜻
사용하기가...
Daemon도 관리해야 하고...
이미 사용하고 있어
운영 경험이 있음
SQL 실행 엔진은?
기능이외 검토 항목
최근 기술인가?
오픈된 커뮤니티를
운영하고 있는가?
내부 구조까지 잘 아는
지인이 있는가?
- JSON 포맷을 지원해야 함
- S3,	HDFS,	MySQL 등에 저장된 데이터로
Join이 되어야 함
- 여러 사용자가 동시에 질의를 실행할 수 있어야 함
- Ruby에서 SQL을 실행할 수 있어야 함
- 가능하면 표준 SQL을 지원해야 함
- 기존 Hive 보다는 빨라야 함
- 하지만, Large	Scale	Data	처리는 필요 없음
(적당한 Scale 이면 충분)
기능 검토 항목
최종 선택은
4,868
그러면 SparkSQL 은?
https://www.quora.com/What-are-the-main-use-case-differences-between-Apache-Spark-SQL-and-Apache-Impala-incubating
Impala	is	designed	for	use	by	analysts	for	data	discovery(BI)	
across	massive	data	sets.	For	that	reason,	it	provides	the	low-
latency	queries	under	multi-user	load	expected	by	those	users	
who	want	a	BI-style	experience.
Conversely,	Spark	SQL	is	designed	to	let	developers	&	data	
scientists	use	SQL	constructs	when	doing	procedural	
development,	whether	for	ML	apps	or	perhaps	ETL.
If	you	are	plugging	in	via	a	real	BI	tool,	SparkSQL isn't	the	
answer.
가장 큰 고민은?
실무자가 SQL을 사용할 수 있을까?
(대부분의 질의는 Join,	Filter,	Group	by,	Order	by)
단순히 학습만 하는 것으로는 한계가 있음
개발자와 실무자의 협업을 통해
SQL 사용 능력 향상
Spark 연동이 아닌 협업 도구로 Zeppelin 활용
실무자의 SQL 학습 과정
사용자는 KPI 등 데이터 요청
개발자가 Notebook에 SQL 작성
(상단 Paragraph에 Query에 대한 설명)
유사한 패턴은 실무자가
Paragraph의 SQL 복사 후
일부 수정하여 직접 데이터 처리
(6개월 정도하면...)
Zeppelin에 추가 기능 필요
Presto	Interpreter
질의 Progress, Kill 기능
리소스를 많이 사용하는 질의 실행 제한
Notebook에 대한 생성, 수정, 실행 권한
특정 기능에 대한 접근 제한
데이터의 접근 제한
Presto	Interpreter	for	Zeppelin
기존 Presto	interpreter	patch가 존재
.	https://github.com/danielhaviv/incubator-zeppelin
.	Not	merged	into	presto	trunk(JDK	version	mismatch)	
.	Presto	JDBC를 이용하여 개발되어
Progress,	kill	지원 안됨
Presto	interpreter	made	by	Jobplanet
.	https://github.com/babokim/incubator-zeppelin
.	Presto	native	client,	REST	API	이용
Progress,	Kill	기능 지원
.	Zeppelin에서 지원하지 않는 일부 기능 지원
.	Not	merged
Presto	Interpreter:	Data	ACL
Presto	권한 관리는 각 Connector의 ACL	기능 이용
But,	Kafka	등은 지원하지 않음
각 스토리지에 권한관리 별도 설정 해야 함
Presto	Zeppelin	Interpreter의 권한관리
. Catalog,	Schema,	Table,	Column	단위로 권한 관리
. Read/Write는 schema	레벨로 관리
. Operation(INSERT,	SELECT	등)별로 권한 관리는
지원하지 않음
Presto	Interpreter:	Data	ACL
접근 제안 관리 설정
.	{ZEPPELIN_HOME}/conf/presto-acl.properties
.	{group}.{catalog}.{schema}.{table}.{columns}=allow|deny
국가별 사용자 Schema 접근 제한 예
. ko_emp.hive.korea.*=allow (한국 사용자만 접근)
컬럼 접근 제한
. ko_dev.hive.korea.logs.*=allow
(한국 개발자 logs	테이블 모든 컬럼 접근 권한 허용)
. ko_emp.mysql.korea.users.id,created_at=allow
(한국 일반 사용자에게 users 테이블의 id,	created_at 컬럼만 허용)
Presto	Interpreter:	Query	검증
다음과 같은 잘못된 질의 실행 요청에 대한 검증
Partition	column	반드시 사용
. Fact	테이블(logs)	질의 시 Where	절에 반드시
Partition	column	존재 해야 함
. Join,	Sub	query	등 복잡한 질의도 검증 가능
Limit	절이 없는 경우 불필요한 데이터가 조회
. Plugin	설정에서 max	limit	수 설정 가능
. 해당 설정 초과되는 데이터는 개발팀으로 요청
Zeppelin	Improvement
Paragraph	결과 데이터 다운로드 기능이 없어서
. Paragraph	결과 데이터가 많은 경우 사용자 브라우저 속도 저하
. Copy	&	Paste	시 번거롭고, Excel	Cell이 잘 깨짐
개선 사항
. 최대 1000개 레코드만 브라우저에 표시
. 1000개 이상의 데이터는 서버에 파일로 저장(retention 설정)
. Paragraph	Download	버튼 추가
Zeppelin	Improvement
Authentication
. Zeppelin	기본 기능 이용(Apache	Shiro 기반)
. Presto	Interpreter의권한관리에서 user,	group	으로 사용
Authorization
. Zeppelin	커뮤니티 내에서도 꾸준히 개선 작업하고 있지만
바로 사용하기 위해 소스 코드내 권한 제어 코드 임의 추가
. Group 명 수정: User1,	User2,	User3	->	dev,	emp,	emp_writer
. 화면 특정 기능에 대한 접근 제한 기능
. Admin,	Dev	계정만 Notebook	생성 가능
. Admin	계정만 Interpreter,	Configuration	메뉴 사용 가능 등
Zeppelin	사용 화면
Presto	Query	예제
presto:ko>	select	dt,	count(*)	from	hive.action_log
where	user_id =	'1234'	group	by	dt order	by	dt;
dt |	_col1
----------+-------
...	
20160615	|				14
20160616	|				14
(66	rows)
Splits:	1,130	total,	1,130	done (100.00%)
3:19	[86.7M	rows,	66.4GB]	[436K	rows/s,	341MB/s]
presto:ko>	select	dt,	count(*)	from	hive.action_log_orc
where	user_id =	'1234'	group	by	dt order	by	dt;
dt |	_col1
----------+-------
...
20160615	|				14
20160616	|				14
(66	rows)
Splits:	328	total,	328	done (100.00%)
0:03	[85.7M	rows,	9.52GB]	[29.1M	rows/s,	3.24GB/s]
Good	Bike를 만들었을까?
직접...
바빠서...
조합...
전체...
쉽고/빨랐...
보안...
Zeppelin	+	SQL	+	Download	->	Excel
관리 화면 만들 필요 없음. Spark	or	Map/Reduce
프로그램 없이 SQL 만으로도 처리
로그 저장을 ES	->	S3,	분석은 Presto등
MySQL,	Log	Data	Join 가능
SQL(Not	best,	but	not	bad),	DistributedComputing
Table의 Column 단위까지 제어 가능
현재는
S3를 저장소로 사용할 경우 실시간으로
로그 데이터를 볼 수 없음
Topic을 Presto Query로 실행하는
구성 중
문제는 Kafka	Connector가 Offset	관리를
하지 않고 전체 Topic 데이터를 Scan
Partition	pruning	&	Filter	pushdown	작업 중
Machine	Learning/
Streaming	Analysis
Interactive	
Data	Exploration
다음 모습은...
Real-time
Data	Ingestion
Real-time
Network	Analysis
Caravel
Presto, Zeppelin을 이용한 초간단 BI 구축 사례
References
• https://prestodb.io
• http://zeppelin.apache.org/
• http://www.slideshare.net/dongminyu/presto-anatomy
• http://www.slideshare.net/AmazonWebServices/bdt30
3-running-spark-and-presto-on-the-netflix-big-data-
platform
• https://www.quora.com/What-is-the-difference-
between-Spark-and-Presto
• http://cleverowl.uk/2015/11/19/the-sql-on-hadoop-
landscape-an-overview-part-i/
• http://cleverowl.uk/2015/12/25/the-sql-on-hadoop-
landscape-an-overview-part-ii/

More Related Content

PDF
Apache Zeppelin으로 데이터 분석하기
PDF
Redis + Apache Spark = Swiss Army Knife Meets Kitchen Sink
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
PDF
Hudi: Large-Scale, Near Real-Time Pipelines at Uber with Nishith Agarwal and ...
PDF
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
PDF
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
PDF
오픈소스 모니터링비교
PDF
서버 성능에 대한 정의와 이해
Apache Zeppelin으로 데이터 분석하기
Redis + Apache Spark = Swiss Army Knife Meets Kitchen Sink
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유
Hudi: Large-Scale, Near Real-Time Pipelines at Uber with Nishith Agarwal and ...
Cloud dw benchmark using tpd-ds( Snowflake vs Redshift vs EMR Hive )
[NDC 2018] Spark, Flintrock, Airflow 로 구현하는 탄력적이고 유연한 데이터 분산처리 자동화 인프라 구축
오픈소스 모니터링비교
서버 성능에 대한 정의와 이해

What's hot (20)

PDF
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
PDF
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
PDF
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
PDF
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
PDF
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
PDF
[236] 카카오의데이터파이프라인 윤도영
PPTX
Hadoop Meetup Jan 2019 - Overview of Ozone
PDF
IDC 서버 몽땅 AWS로 이전하기 위한 5가지 방법 - 윤석찬 (AWS 테크에반젤리스트)
PDF
PDF
AWS EMR Cost optimization
PDF
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
PPTX
로그 기깔나게 잘 디자인하는 법
PPTX
Apache Kafka Best Practices
PDF
[215]네이버콘텐츠통계서비스소개 김기영
PDF
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
PPTX
From cache to in-memory data grid. Introduction to Hazelcast.
PDF
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
PDF
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
PDF
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
PDF
Kakao Cloud Native Platform, 9rum
Spark 의 핵심은 무엇인가? RDD! (RDD paper review)
Amazon S3 Best Practice and Tuning for Hadoop/Spark in the Cloud
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Spark + S3 + R3를 이용한 데이터 분석 시스템 만들기
효율적인 빅데이터 분석 및 처리를 위한 Glue, EMR 활용 - 김태현 솔루션즈 아키텍트, AWS :: AWS Summit Seoul 2019
[236] 카카오의데이터파이프라인 윤도영
Hadoop Meetup Jan 2019 - Overview of Ozone
IDC 서버 몽땅 AWS로 이전하기 위한 5가지 방법 - 윤석찬 (AWS 테크에반젤리스트)
AWS EMR Cost optimization
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
로그 기깔나게 잘 디자인하는 법
Apache Kafka Best Practices
[215]네이버콘텐츠통계서비스소개 김기영
Aws glue를 통한 손쉬운 데이터 전처리 작업하기
From cache to in-memory data grid. Introduction to Hazelcast.
[NDC18] 야생의 땅 듀랑고의 데이터 엔지니어링 이야기: 로그 시스템 구축 경험 공유 (2부)
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
Kubernetes Forum Seoul 2019: Re-architecting Data Platform with Kubernetes
Kakao Cloud Native Platform, 9rum
Ad

Similar to Presto, Zeppelin을 이용한 초간단 BI 구축 사례 (20)

PPT
레일스를 이용한 애자일 웹 개발 가이드
PPTX
Elastic Search Performance Optimization - Deview 2014
PPT
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
PDF
[D2 오픈세미나]4.네이티브앱저장통신
PDF
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
PDF
Elastic Stack & Data pipeline (1장)
PPTX
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
PDF
[PYCON Korea 2018] Python Application Server for Recommender System
PDF
[PYCON Korea 2018] Python Application Server for Recommender System
PPTX
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
PDF
Laravel로 스타트업 기술 스택 구성하기
PDF
AngularJS In Production
PDF
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
PPTX
Node.js에서 공공API를 활용해서 개발하기
PPTX
테드폴허브(올챙이) PostgreSQL 디비 확장하기
PPTX
Introduction to Apache Tajo
PDF
03.실행환경 교육교재(배치처리)
PPTX
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
PPTX
올챙이 현재와 미래
PDF
Service Worker 를 이용한 
Offline Web Application 구현
레일스를 이용한 애자일 웹 개발 가이드
Elastic Search Performance Optimization - Deview 2014
2007년 제8회 JCO 컨퍼런스 POJO 프로그래밍 발표 자료
[D2 오픈세미나]4.네이티브앱저장통신
NAVER 오픈세미나 대구 (2014.08.01) - 오픈소스 라이브러리를 활용한 네이티브 어플리케이션의 데이터 저장과 통신
Elastic Stack & Data pipeline (1장)
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
[PYCON Korea 2018] Python Application Server for Recommender System
[PYCON Korea 2018] Python Application Server for Recommender System
Python과 Tensorflow를 활용한 AI Chatbot 개발 및 실무 적용
Laravel로 스타트업 기술 스택 구성하기
AngularJS In Production
피플펀드 웹서비스 성능개선기(+초기 스타트업의 개발방법론) 20171220
Node.js에서 공공API를 활용해서 개발하기
테드폴허브(올챙이) PostgreSQL 디비 확장하기
Introduction to Apache Tajo
03.실행환경 교육교재(배치처리)
(Spring Data JPA)게시판 리스트보기_오라클, 스프링부트,페이지나누기
올챙이 현재와 미래
Service Worker 를 이용한 
Offline Web Application 구현
Ad

More from Hyoungjun Kim (6)

PDF
Open infradays 2019_msa_k8s
PPTX
오픈소스 프로젝트 따라잡기_공개
PDF
Tajo_Meetup_20141120
PDF
Jco 소셜 빅데이터_20120218
PDF
Big data 20111203_배포판
PPTX
Neptune Distributed Data System
Open infradays 2019_msa_k8s
오픈소스 프로젝트 따라잡기_공개
Tajo_Meetup_20141120
Jco 소셜 빅데이터_20120218
Big data 20111203_배포판
Neptune Distributed Data System

Presto, Zeppelin을 이용한 초간단 BI 구축 사례