1 분 소요

  • spark : 빅데이터 분석 도구, but CLI만 사용 가능
  • 데이터 분석 업무를 하다보면, 여러가지 알고리즘과 파라미터를 바꿔가며 분석 결과를 반복해서 그래프나 테이블 같은 형태로 시각화하여 확인해야 하는데 커맨드 라인 도구는 불편하다.

image

  • Apache Zeppelin은 Spark를 통한 데이터 분석의 불편함을 Web 기반의 Notebook을 통해서 해결해보고자 만들어진 어플리케이션이다.
  • 사용자들은 Zeppelin을 이용하여 Web에서 Python, Scala 등의 다양한 언어를 섞어가며 분석 코드를 짤 수 있고 이 결과를 바로 Graph로 시각화하여 볼 수 있다.
  • 여기에 더해 Zeppelin은 넓어져가는 빅데이터 분석도구 시장의 다양한 니즈에 맞추기 위해서 Spark 뿐만이 아닌 Livy, Cassandra, Lens, SQL 등등의 다른 데이터 분석 도구나 데이터베이스에 접근하여 쿼리하는 것을 쉽게 할 수 있는 확장 기능들을 지원한다.

Zeppelin 사용

  • 오픈소스를 기반으로 빅데이터 분석 시스템을 구성하는 기업들은 다양한 기술 스택을 서로 엮어서 시스템을 구성하게 되는데 Zeppelin 하나만 있으면 이들 시스템의 각 요소들에 자유롭게 접근하여 데이터를 다룰 수 있게 된 것이다. → 이러한 확장성 때문에 Zeppelin은 후발주자임에도 매우 빠르게 여러 기업들에 사용되기 시작했고 널리 알려지게 된 것이다.

Zeppelin - Interpreter 플러그인

  • 이러한 확장성은 Zeppelin의 Interpreter라는 플러그인 구조로 지원되는데 각 Interpreter들은 Zeppelin의 Web Interface를 통해서 입력받은 분석 코드를 local 또는 원격에서 실행할 수 있다.
  • 예) Spark로 Map_reduce하는 코드를 작성하고 실행을 누르면, Zeppelin 안에 설치된 Spark Interpreter가 이를 받아 spark Master의 Client 라이브러리를 통해 코드를 보내고 그 실행 결과를 받아 다시 Web Interface에 보내준다.

또한 Bash로 쉘 스크립트를 짜면 Zeppelin 안에 탑재된 Shell Interpreter가 이를 받아 Zeppelin이 설치된 서버에서 Shell script를 실행하고 그 결과를 Web Interface에 보내주는 형태이다.

Zeppelin 자체가 데이터 분석 처리를 하지 않기 때문에 분석 시스템이나 데이터베이스 등이 미리 구성되어 있어야 하고, Zeppelin과 이들 시스템을 연결해주는 작업을 해야 한다는 어려움이 있지만 한번 연결해 두면 같은 Notebook에서 Pyspark와 SparkR그리고 Cassandra DB를 한번에 조회하는 등의 일을 편하게 할 수 있는 장점이 있다.

image

Zeppelin의 협업 기능

  • Google Sheet처럼 Zeppelin도 WebSocket을 활용하여 같은 Notebook을 여러 사람이 동시에 편집할 수 있는 기능을 제공하고 있다. 한 사람이 분석 코드를 짜면 다른 사람이 그 결과를 원격에서 실시간으로 바로 확인할 수 있는 것이다.
  • 또한 Zeppelin은 Angular JS를 활용하여 Web Interface가 만들어졌기 때문에 Angular JS의 장점인 Data Binding 기능을 응용한 보고서 또는 Dashboard 등을 만들 수 있다.

제플린 사용법

https://www.sunlab.org/teaching/cse6250/spring2018/lab/zeppelin-tutorial/

https://www.youtube.com/watch?v=2EnSzydGPz8