본문 바로가기

데이터분석 & 엔지니어링 부트캠프

GCP(구글 클라우드 플랫폼)에서 스파크 설치하기 2

이전 게시글에서 

-구글 클라우드 회원가입 및 결제수단 등록

- 프로젝트 생성 --> vm인스턴스생성 --> 방화벽 규칙 만들기 

까지 진행했다. 

이제 개발환경을 설치해보자. 

 

1. ssh 터미널 열기

왼쪽 메뉴에서 Compute Engine을 선택한다.

ssh 옆에 브라우저 창에서 열기 클릭

ssh터미널이 열렸다. 이제 여기에서 작업한다. 

 

2. miniconda 설치

경로를 opt로 가주자.(굳이 이 경로에서 안해도 되긴 한다.)

$ cd ../../opt

 

mkdir -p ~/miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
rm -rf ~/miniconda3/miniconda.sh

복붙하자마자 설치가 진행될 것임.

에러없이 잘 됐으면 맨 밑줄이 이럴텐데 엔터치면 된다. 

그리고 

~/miniconda3/bin/conda init bash
~/miniconda3/bin/conda init zsh

얘네 각각 실행하고 나서 

터미널창을 껐다가 다시 키면 

(base)가 활성화 되면 정상적으로 설치가 된 것이다.

 

3. JAVA설치

  • JAVA 설치는 다음과 같다.
(base) /opt$ sudo apt update
(base) /opt$ sudo apt install openjdk-8-jdk -y

이거 실행해주고 (시간 살짝 걸린다.)

 

JAVA 환경변수 설정을 위해 vi ~/.bashrc 명령어를 실행하여 파일을 열고 아래와 같이 코드를 추가한다.

(vi ~/.bashrc 명령어는 cd ~ 명령어로 홈경로로 온다음에 실행)

(환경변수 설정을 해주면 실행해야 할 파일이 있는 경로가 아니더라도 특정 명령어를 사용할 수 있게 된다.)

 

(주의) 환경변수를 다 세팅하고나면 그 경로에 해당하는 파일이 있는 지 반드시 확인하며 세팅해야합니다.

세팅한 경로에 파일이 없으면 의미가 없습니다.

# JAVA ENV SET
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASS_PATH=$JAVA_HOME/lib:$CLASS_PATH

 

이친구를 복사해 두세요 

 

vi편집기 상태에서 수정하는 방법은 

1. 맨밑으로 내려가서 i를 누른다 (맨밑에 INSERT 모드로 변경 확인 가능)

2. 수정할 곳으로 커서를 옮긴다. (위에 #JAVA ENV SET 복붙해서 갖다붙인다)

 

3. 복붙하고 ESC 하고 :(콜론) 쓰면 밑에 콜론 써지는데 :wq! (저장 후 나오는 리눅스 단축키) 로 빠져나온다.

4. source ~/.bashrc 명령어로 적용을 해준다.(안하면 환경변수 적용안됨)  

 

이렇게 해주면 위에 'java-8-openjdk-amd64' 이게 있는 파일이 경로가 /usr/lib/jvm/ 에 들어있는데 저기까지 경로이동을 하지 않더라도 실행이 가능한 상태가 된다는 것이다. (이해 안될 수도 있는데 어쩄든) 

여기까지 자바가 설치됐다. 

 

4. scala 설치

java 설치한거랑 똑같다.

(base) /opt$ sudo apt-get install scala -y 

환경변수 설정해준다 (java 환경변수 설정한거랑 똑같이 하면된다. )

- vi ~/.bashrc 로 편집기 들어가서 

- 자바 환경변수 설정했던 자리 밑에 이거 복붙하고 :wq! 로 빠져나와서 source ~/.bashrc 로 적용해주면 된다.

# SCALA ENV SET
export SCALA_HOME=/usr/bin/scala
export PATH=$SCALA_HOME/bin:$PATH

 

5. spark 설치 (아이고 멀다)

(주의)본 글에서는 스파크 버전을 3.5.1 로 했다. 

스파크 버전은 파이썬 버전에 맞춰주는게 좋다. 

파이썬 버전을 바꾸기는 어려우니 스파크 버전을 매칭해줘야하는데 

각 버전에 맞게 설치해야하는데 맞는 버전이 무엇인지 물으신다면... 음.. 일단 python3.12 에 맞춘거다. 

 

 

(base) /opt$ sudo wget -q https://dlcdn.apache.org/spark/spark-3.5.1/spark-3.5.1-bin-hadoop3.tgz
(base) /opt$ sudo tar -zxf spark-3.5.1-bin-hadoop3.tgz
(base) /opt$ sudo mkdir spark
(base) /opt$ sudo mv spark-3.5.1-bin-hadoop3/* /opt/spark/
(base) /opt$ cd spark
(base) /opt/spark$ ls
LICENSE  R          RELEASE  conf  examples  kubernetes  python  yarn
NOTICE   README.md  bin      data  jars      licenses    sbin

설명할게 꽤 많아보인다. 차례대로 실행해주면 되는데 

설명은 하지 않겠다...! (왜냐! 어려우니까!)

 

스파크도 환경변수를 설정해준다

(java, scala 에서 설정했던것과 똑같음 vi편집기 들어가서 scala설정한 거 밑에 복붙하고 적용까지 해주면 된다.)

# SPARK ENV SET
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
export PYSPARK_PYTHON=/home/your_id/miniconda3/bin/python

 

6. pyspark 설치 

spark 환경변수 설정 후 버전에 맞게 pyspark를 설치한다.

버전이 다르면 설치는 일단 다 될테지만 후에 분명 에러가 날 것이다.

(base) /opt$ pip install pyspark==3.5.1 

PySpark를 실행해본다. 

터미널에서 pyspark 입력하면 된다( 환경변수 세팅해줬으니까 홈 경로에서도 가능) 

대략 이런 이미지가 나오면 성공이다 일단 exit()로 빠져나오자.

만약에 버전을 맞지 않게 설치했다면 

(절차)
-1단계 pip uninstall pyspark 해주시고 
-2단계 /opt/: sudo rm -rf * (다지우는거) (그리고 필자는 /opt/ 경로에서 설치했기에 해당 경로에서 진행한것) 
-3단계 : 위에 스파크 설치할 때 버전 바꿔서 다운로드 받고, 기존과 동일하게 재 세팅

스파크 버전을 바꾸는 이유는 파이썬 버전을 바꾸기가 어렵기 때문

 

7. jupyter notebook 설치 및 설정

  • Jupyter Notebook 설정을 변경한다.

(base) $ conda install jupyter notebook  

실행해주고

Jupyter 설정을 하기 위해 config 파일을 생성한다. 그 후에 vi 편집기를 연다.

  • (base) $ jupyter notebook --generate-config
    Writing default config to: /home/your_id/.jupyter/jupyter_notebook_config.py
    
    (base) $ cd /home/your_id/
    (base) $ vi ~/.jupyter/jupyter_notebook_config.py

your_id는 당연히 여러분의 id 로 바꿔줘야한다.  

아래와 같은 코드를 찾아서 변경한다.

vi 편집기에서 찾기는 / 이후 검색을 한다.

검색 후, 맞는 문자열이 나오면 Enter + i 를 누르면 수정이 가능하다.

  • ## Whether to allow the user to run the notebook as root.
    #c.NotebookApp.allow_root = False
    c.NotebookApp.allow_root = True
    
    ## The IP address the notebook server will listen on.
    #c.NotebookApp.ip = 'localhost'
    c.NotebookApp.ip = '0.0.0.0'
  • Jupyter Notebook을 실행한 후, 외부 IP주소:8888를 URL에 입력하면 접속이 가능하다.
  • 외부 아이피 주소는 vm인스턴스 생성화면에 있다. 
  • 이제 파일을 만들어 코드 실행을 하면 된다.
  • 그리고 인스턴스는 중지하는 것을 잊지말자!