기술 이야기
home
Programming
home
📊

데이터 분석 도구 고르기 : Apache Zeppelin vs Jupyter

Upload date
2022/08/19
Tag
jupyter
Apache Zeppelin
DataAnalytics
Editor
머신러닝파트_전지호
Editor is
머신러닝 솔루션을 구현하는 풀스택 엔지니어입니다. 데이터분석가와 협업하여 좋은 결과물을 만들 수 있는 방안을 다방면으로 고민하고 있습니다.
2 more properties

Table of contents

들어가며

데이터를 분석하기 전, 프로젝트에 가장 적합한 데이터 분석 도구를 고르는 일은 매우 중요합니다. 데이터 분석 도구는 정말 다양하게 존재하는데요. 그 중에서도 데이터 분석의 워크플로우를 개선하는 Jupyter(주피터)와 Apache Zeppelin(아파치 제플린)이 많이 사용되고 있습니다.
Jupyter는 IPython Notebook이 업그레이드 된 형태로, 2012년에 만들어진 노트북입니다. Google과 같이 데이터 분석을 요하는 기술 기업에서 주로 사용합니다.
Apache Zeppelin은 2013년 Apache 재단에서 만든 노트북입니다. 팀 단위 조직에서 코드를 공유하고 데이터 분석의 워크플로우를 개선하는 데에 많은 도움을 줍니다.
이번 포스트에서는 데이터 분석 도구를 선택하기 위해 고려해야 하는 포인트를 중심으로 Jupyter와 Apache Zeppelin 두 노트북을 비교해보려고 합니다.
. . .

데이터 분석 도구를 선택하기 위해 고려해야하는 포인트

1. 설치 방법

설치 단계가 복잡하면, 도구 선택에 있어 진입 장벽으로 작용하게 됩니다.
Jupyter의 설치는 아주 간단합니다. Jupyter는 python 패키지로 제공되는데요. python이 설치되어 있다면, pip 명령어를 통해 쉽게 설치할 수 있습니다.
또한, Jupyter는 도커로 빌드된 이미지도 버전 별로 관리하며 제공하고 있습니다. 서버에서 동작하거나, 각 환경에 맞게 세팅하고 싶을 때 도커 이미지를 사용하면 복잡한 설치와 세팅 과정을 생략할 수 있습니다.
그림 1 : 다양한 Jupyter Dokcer 버전 [1]
cf. 참고 링크
환경에 다른 주피터 버전 선택 주피터 도커 Github
그에 비해, Apache Zeppelin의 설치는 약간 더 복잡합니다. Apache Zeppelin은 Java 기반의 프레임워크이기 때문에 Java 설치가 필수적입니다. Apache Zeppelin은 홈페이지에서 다운받은 뒤, 압축을 풀고 서버에 올려 실행해야 하는데요. 많은 기능을 함께 사용하기 위해서는 소스를 빌드하고 다시 실행해야하는 문제가 있습니다.
Apache Zeppelin은 이렇게 복잡한 설치 과정을 줄이기 위해 도커 이미지를 제공하고 있긴 하지만, 아직은 Jupyter의 설치가 훨씬 간단합니다.
첫 번째 대결에서는, Jupyter의 손을 들어줘야 할 것 같습니다.

2. 커뮤니티

크고 활발한 커뮤니티는 다양한 레퍼런스를 얻거나 문제해결의 도움을 받을 수 있다는 점에서 아주 중요한 요소입니다.
그림 2 : 구글 트렌드 비교
Jupyter의 커뮤니티는 Apache Zeppelin보다 더 크고 훨씬 더 많은 외부 시스템을 지원합니다. 때문에 레퍼런스를 얻고 분석도구를 확장할 때, 커뮤니티로부터 더 많은 도움을 받을 수 있습니다.
Apache Zeppelin의 커뮤니티 또한 빠른 속도로 성장하고 있습니다만, 아직은 Jupyter에 비하면 부족한 상황입니다.
두 번째 대결도, Jupyter의 승리네요.

3. 다중 사용자 지원

공용 환경에서 다중 사용자 지원은 필수입니다.
Apache Zeppelin는 다중 사용자를 지원하지만, Jupyter는 다중 사용자를 지원하지 않습니다.
물론 JupyterHub라는 Jupyter 확장 리소스는 다중 사용자 지원을 약속합니다. 그러나 Apache Zeppelin이 하나의 서버에서 다중 사용자를 지원하는 반면, JupyterHub는 사용자마다 별도의 서버가 필요하고 Hub에서 각 서버를 연결해줘야 합니다.
세 번째 대결은, Apache Zeppelin의 승리일까요? 리소스 분배와 관련된 내용을 추가로 알아보고 판단해보도록 하겠습니다.

4. 다중 사용자 지원 시, 리소스 분배

다중 사용자가 많은 리소스를 동시에 사용할 때, 이에 대한 대응은 어떨까요?
Apache Zeppelin은 서버 단일 프로세스를 사용합니다. 이 경우, 다중 사용자의 이용에 취약해집니다. 다수의 사용자가 하나의 리소스를 공통으로 사용하기 때문에 작업에 따라 리소스 제약이 크게 걸릴 수 있습니다. Apache Zeppelin 내부에서는 이를 회피하기 위해 conda 환경이나 도커 환경을 지원합니다.
그럼 Jupyter는 어떨까요? JupyterHub는 각 사용자마다 서버를 따로 제공하기 때문에 단일 서버 프로세스를 사용한다 하더라도 서로 영향을 주지 않습니다. 하지만 그만큼 각각의 서버를 구축하기 때문에 많은 비용이 들게 되는데요. JupyterHub는 이러한 문제를 해결하기 위해, 쿠버네티스 환경에서 동작하는 JupyterHub를 제공합니다. 하나의 서버에서 동작하는 쿠버네티스 환경에서 JupyterHub는 각각의 사용자에 대해 가상의 컨테이너를 제공함으로써, 분리된 작업환경을 제공하며 서버 구축 비용을 줄일 수 있습니다.
Apache Zeppelin은 기본적인 다중 사용자 지원을 제공합니다. 하지만 JupyterHub를 사용한다면 더 유연한 다중 사용자 지원이 가능합니다.

5. 보안

최종 사용자에 대한 보안 관리
Apache Zeppelin의 경우 최종 사용자에 대한 개인 정보 보호가 필요한 경우, 유연한 보안 구성을 제공합니다.
Jupyter는 개인 정보 구성이 존재하지 않습니다. JupyterHub에서 각 사용자에 대한 분리 구성을 제공하지만, 더 수준 높은 보안을 위해서는 별도로 더 많은 조치를 취해야합니다.
Apache Zeppelin이 Jupyter보다 더 유연한 보안 구성을 제공한다고 할 수 있겠네요.

6. 확장

더 많은 환경과 기능을 사용하고 싶다면...?
Apache Zeppelin이 약 20개의 엔진만 지원하는 것에 비해, Jupyter는 85개가 넘는 엔진을 지원합니다. 이와 더불어 Jupyter는 오랜 기간 동안 발전해 온 커뮤니티 덕분에 많은 확장 플러그인을 보유하고 있어, 사용자가 원하는 환경을 세팅하기에도 유리합니다.
단일 환경을 제공하지 않고 다양한 환경 지원을 목표로 하고 있다면 Jupyter를 사용하는 것이 좋습니다.

7. 데이터 시각화

데이터 비주얼라이징 기능은 데이터 분석에 있어 필수적인 기능인데요. Jupyter와 Apache Zeppelin은 둘 다 매우 훌륭하고 다양한 비주얼라이징 툴을 플로팅하여 사용할 수 있습니다.
이번 대결은 무승부입니다.
. . .

나가며

데이터 분석 도구는 업무 환경과 개인의 선호도에 따라서 선택할 수 있습니다.
Apache Zeppelin은 대표적인 빅데이터 기술인 Apache Spark를 지원하는 데이터 분석 툴이기에 많은 선택을 받아왔습니다. 하지만 확장성 측면에서, 최근 가장 핫한 개발 트렌드인 도커와 쿠버네티스에 대해 편리한 지원을 제공하는 Jupyter의 우세를 확실히 점칠 수 있습니다. 물론 Apache Spark가 일반적이고 반드시 필요한 곳이라면 Apache Zeppelin를 선택하는 것이 유리하겠지만요.
저희 팀은 python을 주로 사용하고 다양한 환경과 분리된 환경 구성을 제공해야 하기 때문에, 쿠버네티스 환경에 JupyterHub를 구축하여 사용하고 있습니다. (참고로 넷플릭스도 데이터 분석을 위해 주피터를 적극 사용한다고 하네요 )
지금까지 데이터 분석 도구를 선택하기 위해 고려해야하는 포인트를 중심으로 Apache Zeppelin과 Jupyter를 비교해봤는데요. 이 포스트가 여러분이 사용하는 기술 스텍과 프로젝트에 맞는 도구를 선택하는 데에 도움을 드렸길 바랍니다. 고맙습니다.

Reference

다른 글 살펴보기

ALL
프로그래밍
머신러닝
데이터
기술문화
인텔리전스랩스 이야기
Search
LTV (LifeTime Value) 지표 속 BG/NBD 모델과 Gamma-Gamma 모델 파헤치기
플랫폼분석팀_ 이은지
데이터
2022/11/17
Load 50 more
회사소개
 넥슨 게임 포털
인재영입
인텔리전스랩스 블로그 운영 정책
 테크블로그 문의 devrel@nexon.co.kr