반응형
윗 글에서 docker로 spark-hadoop-cluster를 구성했다.
여기에 jupyter 노트북을 붙여서 pyspark를 사용해본다. jupyter 노트북 역시 도커 컨테이너를 사용할 것이당.
1. jupyter용 도커 컨테이너 생성
docker run -it --name jupyter -h jupyter --net mycluster sunnydockerhub/sunny-spark-hadoop-cluster:latest
spark-hadoop-cluster 가 기본으로 구성된 이미지를 사용했다.
2. python3 & jupyter 설치
yum install -y python3-pip
pip3 install jupyter
python3-pip은 다른 hadoop cluster 컨테이너에도 설치해야 한다.
3. 환경변수 세팅
vim ~/.bashrc
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook --ip=172.17.0.2 --port=7777 --allow-root'
source ~/.bashrc
4. 컨테이너 jupyter 접속을 위해 방화벽 포트 오픈하기 (host에서 진행)
iptables -A DOCKER -p tcp --dport 7777 -j ACCEPT -d 172.17.0.2
iptables -t nat -A DOCKER -p tcp --dport 7777 -j DNAT --to 172.17.0.2:7777
iptables -t nat -A POSTROUTING -p tcp --dport 7777 -j MASQUERADE -s 172.17.0.2 -d 172.17.0.2
5. jupyter 토큰 설정 (초기 1번만 진행)
초기 실행 시, 토큰설정 내용이 나온다.
pyspark --master yarn
http://<host-ip>:7777 로 접속해보자.
위에 나온 token을 입력하고, 비밀번호를 세팅한다.
YARN 리소스매니저 웹을 보면 pyspark shell (jupyter)가 구동되고 있는 걸 확인할 수 있다. http://<host-ip>:8088
jupyter를 실행함과 동시에 pyspark shell이 구동되는 것이다.
6. pyspark 프로그램 실행해보기
간단하게 Data Frame을 만들어보는 코드이다.
from pyspark.sql import SparkSession, SQLContext
from pyspark.sql.types import *
from pyspark.sql import functions as F
spark = SparkSession.builder.appName('company').getOrCreate()
sqlContext = SQLContext(spark)
data = sqlContext.createDataFrame([(1.449015065E9, 1.449015065E9), (0.0,1.449015065E9),(1.449015065E9,0.0),(0.0,0.0)],
["modified", "created"])
data.show()
data.printSchema()
test_df = data.select(data.modified).show()
7. jupyter 비밀번호 설정하기
아래 코드로 pyspark를 실행한다. 그러면 비밀번호 입력 칸이 나온다. 위에서 세팅한 비밀번호를 입력하면 해쉬값이 출력된다.
from notebook.auth import passwd
passwd()
해쉬값을 아래 설정파일에 입력하자.
vim /root/.jupyter/jupyter_notebook_config.py
c.NotebookApp.password = ""
반응형
'BigData 기술 > Spark' 카테고리의 다른 글
[spark] 파일 한 줄씩 읽기 (scala fromFile) (4) | 2020.06.24 |
---|---|
histogram in spark (scala) using zeppelin (4) | 2020.06.23 |
docker로 spark-hadoop-cluster 구축하기 (4) | 2020.04.24 |
spark history 서버 설정 및 구동 (4) | 2020.04.22 |
[spark] 리눅스 환경에서 maven + spark + scala (920) | 2019.06.28 |
댓글