본문 바로가기

Hadoop/Apache Spark

JUPYTER NOTEBOOK + PYSPARK 연동 ( + master,worker노드 설정 )

spark 설치 후 jupyter notebook에서 pyspark를 사용하기 위해 연동하는 방법에 대해 알아보겠습니다.

 

hadoop, anaconda, spark가 설정되어 있는 계정으로 접속합니다.

 

먼저 jupyter notebook의 설정을 바꿔야 합니다.

 

jupyter notebook config

 

c.NotebookApp.ip = '*' 로 설정을 하여 외부에서도 jupyter notebook에 접속이 가능하도록 설정합니다.

 

접속 후 홈경로에서 환경변수를 설정합니다.

 

vi .bashrc

 

3개의 환경변수를 설정합니다.

1. PYSPARK_PYTHON

2. PYSPARK_DRIVER_PYTHON

3. PYSPARK_DRIVER_PYTHON_OPTS

 

먼저 첫 번째 PYSPARK_PYTHON은 pyspark가 실행 될 python 경로를 지정합니다.

예를 들어, 기본 python으로 설정되어 있는 버전이 2.7 이라고 할때, anaconda의 python인 3.7버전을 적용하기 위해 경로를 적어줍니다. ( 2.7버전에서는 spark가 실행이 안되고, 3.7 버전에서는 spark가 실행되는 경우 지정 )

 

export PYSPARK_PYTHON=/(anaconda3 경로)/bin/python

 

두 번째 PYSPARK_DRIVER_PYTHON은 jupyter 위에서 실행을 시키기 위해 지정합니다.

 

export PYSPARK_DRIVER_PYTHON=/(anaconda3 경로)/bin/jupyter

 

세 번째 PYSPARK_DRIVER_PYTHON_OPTS 는 pyspark를 실행했을 때, 자동으로 notebook이 실행되기 위해 지정합니다.

 

export PYSPARK_DRIVER_PYTHON_OPTS='notebook'

 

 

jupyter notebook X pyspark 환경변수 설정 .bashrc

 

위와 같이 설정 후 source .bashrc 명령어를 통해 환경변수를 적용시킵니다.

 

이후 pyspark를 실행하면 자동으로 jupyter notebook이 실행됩니다. 

 

* 커널에 pyspark가 적용되려면 다소 시간이 소요될 수 있습니다. 초기작업에 해당.

 

 

Master 노드, Worker 노드에서 적용하기.

 

저는 Master node 1대, Worker node 여러 대를 통해 spark를 구축했습니다.

또한, 기본이 되는 python 2.7 버전과 anaconda python 3.7 버전을 따로 사용하고 있어 환경변수를 설정할 때 구분해서 설정했습니다.

 

그래서 Master node에만 anaconda python 3.7을 적용시켜 놓으면 worker node에서 pyspark가 작동하지 않습니다. 

( worker node에서 python 경로를 찾을 수 없다. 혹은 python 버전이 맞지않아 pyspark가 실행되지 않는다. )

 

환경변수 (PYSPARK_PYTHON) 경로와 똑같이 anaconda3을 설치하여 위 경로를 Master node와 Worker node 동일하게 지정하였습니다. ( worker node에도 anaconda3 설치 )

 

python 경로만 동일하게 지정해준다면 Master node와 Worker node를 지정한 상태에서도 jupyter notebook에서 pyspark가 사용 가능합니다.

 

-- Master node에서 설치한 anaconda3 경로와 동일하게 Worker node에서도 설치. 

 

 

좋은 테스트 예시.

pyspark 간단 예제