린아저씨의 잡학사전

Pyspark Shell과 Jupyter notebook 연동하기


환경 변수 설정


Pyspark Shell과 Jupyter notebook을 연동하기 위해서는 당연하지만 우선 Spark와 Jupyter notebook이 설치 되어 있어야 한다. 
이를 위해 spark는 cloudera 배포판을 이용하여 Spark2.2 버전을 설치하였고, Jupyter notebook은 Anaconda로 환경을 구성 하였다.


Pyspark shell과 Jupyter notebook을 연동하기 위해서는 환경변수 설정을 해주면 간단하게 가능하다.

그리고 나와 같이 Cloudera 배포판을 이용하여 spark를 설치한 경우에는 Hue의 default 포트가 8888로 

Jupyter notebook default 포트와 겹치므로 Jupyter notebook 포트를 변경해줄 필요가 있다.


SPARK_HOME 환경변수와 Pyspark에 대한 환경변수를 설정해주면 된다.


1
2
3
4
5
6
7
8
9
vi ./bashrc
 
# SPARK2 PATH
# export SPARK_HOME=/opt/cloudera/parcels/SPARK2/lib/spark2
 
# pyspark2 PATH
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook'
 
cs


SPARK_HOME 경로에 대해서는 각자 환경에 맞게 잡아주면 된다. 


이렇게 해주면 간단히 Pyspark Shell과 Jupyter notebook이 연동은 되지만 포트 문제로 약간의 설정이 더 필요하다.


jupyter notebook --generate-config 명령어를 실행해서 환경설정 파일을 생성해준다.


그리고 아래처럼 접근가능한 IP 주소, notebook 실행시 브라우저 자동실행 여부, 포트번호, default directory를 설정해 주면된다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
jupyter notebook --generate-config
vi ./.jupyter/jupyter_notebook_config.py
 
## The IP address the notebook server will listen on.
c.NotebookApp.ip = '*'
 
## Whether to open in a browser after starting. The specific browser used is
#  platform dependent and determined by the python standard library `webbrowser`
#  module, unless it is overridden using the --browser (NotebookApp.browser)
#  configuration option.
c.NotebookApp.open_browser = False
 
## The port the notebook server will listen on.
c.NotebookApp.port =17777
 
## The directory to use for notebooks and kernels.
c.NotebookApp.notebook_dir = '/home/training/workSpace'
cs


위의 설정은 모든 포트에 대해 접근을 허용하며 notebook 실행시 브라우저 자동실행 하지 않음, 포트번호 17777로 설정하였다. 


그리고 notebook이 실행될때 처음 위치하는 default directory는 /home/training/workSpace로 해주었다.


이렇게 해주면 모든 설정이 끝나고 Shell에서 pyspark를 실행한 뒤 jupyter notebook에서 발행하는 토큰으로 접속하면 된다.



1
2
3
4
5
pyspark
 
 Copy/paste this URL into your browser when you connect for the first time,
 to login with a token:
 http://localhost:17777/?token=0e87d24be16e9e7csdfsd25qf48c9c802f8d4b39c721adf
cs


공유하기

facebook twitter kakaoTalk kakaostory naver band