[linux] ubuntu에 spark 설치 및 jupyter notebook과 pyspark연동

HSLee
7 min readMar 9, 2020

--

이전 글에서 WSL ubuntu에서 Rstudio-server를 구축하였고 이어 java를 설치하였다. 이번에는 scala와 spark를 설치하고 jupyter notebook과 pyspark의 연동을 진행해보려 한다. 참고로 spark를 설치하기전에 반드시 java가 설치되어 있어야 하므로 설치가 되어있지 않은 분은 이전 글을 참고하여 java를 먼저 설치한 뒤 진행하길 바란다.

1. Spark 설치

먼저 scala를 설치하여 주자. 우분투에서 다음 코드를 작성하면 된다.

$ sudo apt-get install scala

이후 scala를 실행하여 보자

$ scala

이제 scala의 환경변수를 설정해 줄 것이다. 설정 하는 방법은
WSL을 활용한 Rstudio-server 설치 — 5. Rjava설치’ 의 java 환경변수 설치와 동일하고 scala의 환경변수 코드는 다음과 같다.

export SCALA_HOME=/usr/bin/scala
export PATH=$SCALA_HOME/bin:$PATH

다음으로 spark를 설치하자. spark 홈페이지에서 원하는 버전을 선택한 후 다운로드 url을 알아내자.

버전을 선택하고 3번째 경로를 들어가면 다음과 같은 화면이 나오고 다음 주소를 복사하여 다운 받아주면 된다.

필자는 2.4.5 버전을 다운받았고 코드는 다음과 같다.

$ wget http://mirror.navercorp.com/apache/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.7.tgz

이제 다운받은 spark의 압축파일을 풀어주면 spark 설치는 완료된다.

$ tar xvf spark-2.4.5-bin-hadoop2.7.tgz

그냥 사용해도 문제는 없지만 폴더 명이 너무 길고 복잡하기에 필자는 spark의 위치를 /usr/spark 라는 디렉토리로 옮겨주었다.

$ sudo mv spark-2.4.5-bin-hadoop2.7/ /usr/spark

이제 spark도 환경변수를 지정해주어야 한다. 방법은 당연히 java나 scala와 동일하고 코드는 다음과 같다.

export SPARK_HOME=/usr/spark
export PATH=$SPARK_HOME/bin:$PATH

이제 spark가 잘 설치되었는지 실행 후 명령어를 하나 날려보자. scala를 설치 후 spark-shell을 실행하였으므로 scala의 언어를 사용해야 한다.

$ /usr/spark/bin/spark-shellprintln("spark is running")

spark가 잘 설치되었고 실행까지 잘 되는 것을 볼 수 있다!

2. Jupyter notebook에서 pyspark활용

ubuntu에는 기본적으로 python3.6.9 버전이 내장되어있다. 3.6 버전이 기본 python으로 지정되어있지 않으므로 이를 기본으로 지정해주도록 하자.

$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 9

이제 jupyter notebook을 설치하자. jupyter notebook을 설치하기 위해 먼저 pip3부터 설치해야한다.

$ sudo apt install python3-pip$ pip3 install jupyter

jupyter를 설치 후 ubuntu를 재시작해주면 jupyter notebook 명령어로 jupyter notebook을 실행할 수 있다.

실행되면 브라우저를 통하여
http://localhost:8888/?token=shdlkglahdlfa…..
를 전부 복사하여 주소창에 입력 후 접속하면 jupyter notebook이 나타난다.

이제 jupyter에서 pyspark를 실행할 수 있도록 하자. 일단 ubuntu에서 python을 실행한 뒤 비밀번호부터 설정해주자.

$ python>>> from notebook.auth import passwd
>>> passwd()

비밀번호를 설정하면 ‘sha1:????????????????’ 가 나타나는데 이를 전부 복사해두자.

이제 python에서 나온 후 jupyter 설정 파일을 생성하고 다음 코드를 아래에 추가해주자.

$ jupyter notebook --generate-config$ sudo vi ~/.jupyter/jupyter_notebook_config.pyc.NotebookApp.allow_origin = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'passwd()에서 복사한 비밀번호'

입력 후 esc, :wq 엔터 로 저장하며 빠져나온 뒤, pyspark가 jupyter notebook으로 실행되도록 환경변수를 설정하여 주자.

$ sudo nano /etc/profileexport PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

이제 ubuntu를 재시작한 뒤 pyspark 명령어로 pyspark를 실행하자.

$ pyspark

pyspark가 실행되면 인터넷 브라우저에 ‘localhost:8888’ 로 접속하면 패스워드를 입력하라는 창이 나타나고 이전에 python 로컬에서 passwd() 로 설정했던 비밀번호를 입력하면 우리가 잘 아는 jupyter notebook이 나타난다.

passwd 입력!

이제 python창을 열어 spark가 잘 연동되어있는지 sc 명령어로 확인해보자

sc

잘 연동되었다!

후기

pyspark를 jupyter와 연결하면서 python버전 문제나 scala, spark 환경변수 설정등 처음 해보는 것이 많아서 시간이 꽤 걸렸다. 정말 처음보는 에러도 많이 봤던것같고…. 이후에는 pyspark를 이용하여 이미지분석을 시도해 보려고 한다.

--

--

HSLee
HSLee

Written by HSLee

Data Scientist를 꿈꾸는 MathScientist

No responses yet