본문 바로가기
분석환경구축하기/GCP

[GCP] #08 GCP Compute Engine VM에 제플린(zepplien), 스파크(Spark), 스칼라(Scala) 설치하기

by DoBeFree 2020. 5. 12.
반응형

<시리즈 목차> 

1화 : [GCP] #01 GCP Compute Engine VM 으로 분석서버 구축하기
2화 : [GCP] #02 GCP Compute Engine VM 인스턴스 초기 세팅하기
3화 : [GCP] #03 GCP Compute Engine VM에 파이썬(Python) 분석환경 구성하기
4화 : [GCP] #04 GCP Compute Engine VM에 R 분석환경 구성하기
5화 : [GCP] #05 분석을 위한 Google CloudSQL SQLServer 구축&GCE 파이썬 분석서버와 연결하기
6화 : [GCP] #06 Google Bigquery GCE 파이썬서버에서 활용하기
7화 : [GCP] #07 GCP Compute Engine VM에 아파치 에어플로우(Airflow) 설치하여 ETL 환경 구축하기
8화 : [GCP] #08 GCP Compute Engine VM에 제플린(zepplien), 스파크(Spark), 스칼라(Scala) 설치하기
9화 : [GCP] #09 Google Cloud Storage 저장소를 GCE 파이썬 서버에서 활용하기

 

분석가의 입장에서 아파치 제플린(Apache Zeppelin)은 개별블록의 코드와 결과를 동시에 보여줌으로써 분석과정-결과를 손쉽게 공유할 수 있도록 도와주는 웹 기반의 노트북 입니다.

보통은 분산처리환경에서 분석을 지원하

는 용도로 쓰입니다. 이번 글의 경우 단일클러스터에서 스칼라와 스파크를 연습할 수 있는 환경을 만드는것이 목적이기 때문에 클러스터간 작업에 대해서는 다루지 않습니다.

설치 환경

1. OS : Ubuntu 20.04 LTS

1. 스칼라(Scala) 설치하기

스칼라를 설치하기 위해서는 JDK8설치가 필수입니다. 따라서 "$ java -version" 을통해 JDK11 혹은 8이 설치됐는지 확인이 필요합니다. Ubuntu 18.04 에 JDK8을 설치하는 방법은 아래 글을 통해 확인할 수 있습니다.
* [GCP] #02 GCP Compute Engine VM 인스턴스 초기 세팅하기

 

[GCP] #02 GCP Compute Engine VM 인스턴스 초기 세팅하기

이번 글은 GCP Compute Enigne VM 인스턴스를 만들고 진행해야할 초기 세팅에 대해서 다룹니다. GCP 인스턴스를 만드는 법은 이전글을 참고할수 있습니다. 2020/04/30 - [분석환경구축하기/GCP] - [GCP] #01 GCP C..

yamerong.tistory.com

JDK11을 설치완료했다면 아래 터미널 명령어를 통해 스칼라를 설치합니다.

$ sudo apt-get update
$ sudo apt-get install scala

성공적으로 설치됐다면 아래 명령어를 통해 스칼라를 실행할 수 있습니다.

# scala 명령어를 통해 scala 실행
$ scala

scala> println("hello world!")

2. 스파크(Spark) 설치하기

STEP 01 : 스파크 다운로드 및 설치

스파크는 아래 공식홈페이지에서 최신버전과 이전버전에 대해 확인할 수 있습니다.
https://spark.apache.org/downloads.html

 

Downloads | Apache Spark

Download Apache Spark™ Choose a Spark release: Choose a package type: Download Spark: Verify this release using the and project release KEYS. Note that, Spark is pre-built with Scala 2.11 except version 2.4.2, which is pre-built with Scala 2.12. Latest P

spark.apache.org

스파크의 경우 인프라 환경에 따라서 다운받아야할 버전이 다양하고, 버전에 따라 문법이 조금씩 다르기 때문에 본인에게 필요한 버전을 미리 숙지하고 있는것이 좋습니다. 제 경우는 개인용도로 쓸 예정이고 딱히 귀속된 환경이 없기 때문에 현재기준 최신버전인 2.4.5 버전을 설치할 예정입니다. 

주의 : 위 사진의 Download Spark 링크는 다운로드파일이 아니라, 해당 링크로 wget 이나 curl로 다운받으면 설치가 되지 않습니다. 클릭후 아래 페이지의 Mirror 주소로 다운받아야합니다.

spark 파일 링크 : https://dlcdn.apache.org/spark/spark-3.2.1/spark-3.2.1-bin-hadoop3.2.tgz

# 설치파일을 다운로드 받습니다.
$ wget https://dlcdn.apache.org/spark/spark-3.2.1/spark-3.2.1-bin-hadoop3.2.tgz

# 압축을 풉니다.
$ tar -xvzf spark-3.2.1-bin-hadoop3.2.tgz

# 스파크 디렉토리명을 spark-3.2.1-bin-hadoop3.2에서 spark로 변경합니다.
mv spark-3.2.1-bin-hadoop3.2/ spark/

정상적으로 설치됐다면 아래 명령어를 통해 스파크를 실행하고 동일한 결과를 얻을 수 있습니다.(단 실행에 조금 시간이 걸릴 수 있음.)

$ cd ~/spark/bin
$ ./spark-shell

<정상작동 결과>

STEP 02 : 스파크 환경변수 등록

$ cd ~/spark/bin
$ ./spark-shell

위 명령어를 통해 매번 스파크 디렉토리에서 스파크를 실행하는것은 비효율적입니다. 따라서 bash_profile을 수정하여 경로를 지정하도록 합니다.(제플린 설정을 위해서라도 꼭 필요한 절차입니다.)
bash_profile에 대한 설정방법은 [GCP] #02 GCP Compute Engine VM 인스턴스 초기 세팅하기 에서 확인 가능합니다.

#vi 에디터를 통해 bash_profile 수정하기
$ vi ~/.bash_profile

-------------------------|아래는 vi 에디터 화면임|-------------------------

#SPARK_HOME 등록(스파크 디렉터리 설정하기)
export SPARK_HOME=$HOME/spark

#PATH 환경변수에 SPARK_HOME 추가
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

#alias를 통해 spark/pyspark 명령어 수동등록하기
alias spark="$SPARK_HOME/bin/spark-shell"
alias pyspark="$SPARK_HOME/bin/pyspark"
--------------------------------------------------------------------------

# 변경사항 적용하기
$ source ~/.bash_profile

~/.bash_profile 작성화면 

정상적으로 등록됐다면 아래 명령어를 통해 $PATH 환경변수에 스파크 경로가 설정된 것을 확인할 수 있습니다. 아울러 spark/ pyspark도 작동하는것을 확인할 수 있습니다.

(1) $PATH 적용확인

$PATH 끝에 spark 설치경로가 잘 등록된것을 확인할 수 있습니다.

$ echo $PATH

(2) alias 적용확인

$ spark

$ pyspark

3. 제플린(zeppelin)설치하기

STEP01 : 제플린 다운로드하고 실행하기

공식홈페이지(https://zeppelin.apache.org/)에서 최신버전의 제플린을 다운받을 수 있습니다. 

스파크때와 마찬가지로 별도 최종 파일을 다운로드하기 위해서 꾀나 많은 페이지를 뚫고 가야합니다. 이 페이지에서 링크를 복사한후 제플린 압축파일을 다운로드 받고 압축을 풉니다.

* 다운로드링크 : https://dlcdn.apache.org/zeppelin/zeppelin-0.10.0/zeppelin-0.10.0-bin-all.tgz

#계정 최상위 디렉토리로 이동 
$ cd ~/

# 제플린 다운로드
$ wget https://dlcdn.apache.org/zeppelin/zeppelin-0.10.0/zeppelin-0.10.0-bin-all.tgz

# 압축풀고 디렉토리명 변경
$ tar -xvf zeppelin-0.10.0-bin-all.tgz
$ mv zeppelin-0.10.0-bin-all/ zeppelin/

제플린을 실행하기 위해서는 ./zeppelin/bin/zeppelin-daemon.sh 파일을 통해 실행해야 합니다.

# 제플린 실행
$ ./zeppelin/bin/zeppelin-daemon.sh start

STEP02 : 제플린 설정하기

위 스크린샷 처럼 정상실행됐다면 제플린 기본설정이 필요합니다.

설정한 파일은 ./zeppelin/conf 디렉토리에 존재하는 shiro.ini , zeppelin-site.xml 입니다. 이 두파일은 shiro.ini.template , zeppelin-site.xml.tempate 로 미리 존재하니 그대로 복사하여 수정하면 됩니다.

(1) shiro.ini 설정

#계정 기본 디렉토리로 이동
$ cd ~/

# shiro 템플릿 파일을 복사.
$ cp ~/zeppelin/conf/shiro.ini.template ./zeppelin/conf/shiro.ini

# vi 에디터를 통해 shiro.ini을 수정함.
$ vi ~/zeppelin/conf/shiro.ini

vi 에디터를 통해 shiro.ini을 수정하면 아래와 같이 admin과 user1 ~ user3까지의 정보가 보입니다. shiro.ini 파일은 권한과 인증을 담당하는 파일로 제플린에 로그인할 사용자를 등록할 수 있습니다.

아이디 = 비밀번호, 권한 양식으로 사용자를 등록할수 있으며 저는 data_anaysis 라는 사용자를 관리자 권한으로 등록했습니다. 비밀번호라고 적힌 부분에 설정을 원하는 비밀번호를 바꿔 입력하면 됩니다.

#admin = password1, admin
user1 = password2, role1, role2
user2 = password3, role3
user3 = password4, role2

# 사용자 등록
data_analysis = 비밀번호, admin

수정을 완료하였다면 esc를 누르고 :wq 를 입력해 저장후 vi 에디터를 나옵니다.

(2) zeppelin-site.xml 설정

# 계정 기본 디렉토리로 이동
$ cd ~/

# zeppelin-site.xml 템플릿 파일을 복사.
$ cp ~/zeppelin/conf/zeppelin-site.xml.template zeppelin-site.xml

# vi 에디터를 통해 zeppelin-site.xml을 수정함.
$ vi ~/zeppelin/conf/zeppelin-site.xml

 

(2-1) Addr / Port 설정

아래 (1)의 설정은 서버 IP를 설정하는 부분으로 0.0.0.0으로 변경해 줍니다. (2)의 경우 접속포트로 기본값은 8080으로 돼 있으나, 그대로 쓰셔도 좋고 원하는대로 변경가능합니다. 저는 아파치 에어플로우의 포트가 8080이기 때문에 8989로 변경하겠습니다. (단 새로 설정한 8989 포트에 대한 방화벽 규칙이 허용돼 있어야 합니다.)

참고 : vi 에디터에서 esc키를 누른후 "/ + 검색어" 를 입력후 엔터를 누르면 해당 단어를 포함한 라인으로 이동 할 수 있습니다. 

* 변경전

#(1) 127.0.0.1 -> 0.0.0.0 으로 변경하기
<property>
  <name>zeppelin.server.addr</name>
  <value> 127.0.0.1</value> # 변경전
  <description>Server binding address</description>
</property>

(2) 8080 -> 8989로 변경하기
<property>
  <name>zeppelin.server.port</name>
  <value>8080</value> # 변경전
  <description>Server port.</description>
</property>

 

* 변경후

#(1) 127.0.0.1 -> 0.0.0.0 으로 변경하기
<property>
  <name>zeppelin.server.addr</name>
  <value> 0.0.0.0</value> # 변경후
  <description>Server binding address</description>
</property>

(2) 8080 -> 8989로 변경하기
<property>
  <name>zeppelin.server.port</name>
  <value>8989</value> # 변경전
  <description>Server port.</description>
</property>

(2-2) anonymous.allowed 설정

최초 설정시 허용되지 않는 anonymous 계정으로 접속이 가능한데, 이를 허용할지 아닐지에 대한 설정으로  제플린 버전에 따라 이미 있는 설정값일수 있고 추가가 필요한 사항일수도 있습니다. 제 경우에는 설정이 빠져 있어 추가하였습니다.  추가가 되어있던 추가가 필요하던 false값으로 설정이 필요합니다.

# 없을경우 추가, 있을경우 false로 설정돼 있는지 확인. 없으면 추가
<property>
  <name>zeppelin.anonymous.allowed</name>
  <value>false</value>
</property>

* 변경전

* 변경후 

STEP03 : 제플린 8989 포트 방화벽 설정하기

 

위 설정에서 제플린 포트를 8989로 설정했습니다. 때문에 신규 방화벽 규칙을 추가해야 합니다. 아래와 같이 방화벽 규칙을 설정하여 추가합니다.(고정 IP 및 방화벽 설정에 대한 정보는 [GCP] #03 GCP Compute Engine VM에 파이썬(Python) 분석환경 구성하기 를 참조할 수 있습니다. )

  • 고정ip 설정하기 : VPC네트워크 > 외부 IP 주소 > 임시ip 를 고정ip로 변경(이미 고정IP가 인스턴스에 할당되어 있으면 넘어가도 됩니다.)
  • 방화벽 설정 변경하기 : VPC네트워크 > 방화벽 규칙 > 방화벽 규칙만들기 에서 8989 포트에 대한 접속을 허가합니다.

STEP 03 : 제플린 명령어 등록하기(선택)

스파크 설치에서 alias를 통해 간단한 명령어를 만들었었습니다. 제플린 또한 ./zeppelin/bin/zeppelin-daemon.sh 파일을 통해 실행/정지해야 하기 때문에 간단한 명령어를 등록하여 편하게 사용할 수 있습니다. (bash_profile에 대한 설정방법은 [GCP] #02 GCP Compute Engine VM 인스턴스 초기 세팅하기 에서 확인 가능합니다.) 

$ vi ~/.bash_profile

--------------------|아래부터 vi 에디터 등록 내용|--------------------
#zeppelin-daemon.sh 파일 경로를 zeppelin 이라는 명령어로 등록.
alias zeppelin="$HOME/zeppelin/bin/zeppelin-daemon.sh"
--------------------------------------------------------------------

$ source ~/.bash_profile

~/.bash_profile 추가한 결과

아래 명령어를 통해 결과를 테스트하고 제플린서버를 재시작하여 앞서 진행한 모든 설정을 반영합니다.

$ zeppelin restart

(5) 제플린 접속하기

<고정IP:8989> 를 브라우저 주소창에 입력하여 접속가능하다.

 

참고 및 인용

  • 제플린 설치: https://pizzaplanet.tistory.com/entry/Apache-Zeppelin-Setting?category=837542
  • 스파크 설치 : https://computingforgeeks.com/how-to-install-apache-spark-on-ubuntu-debian/

 

반응형

댓글