Apache Spark Cluster 구성

Tips 2021. 10. 10. 21:48

아래의 블로그가 매우 유용하였다.

https://velog.io/@somnode/spark-cluster-install

 

[spark] Spark 3 클러스터 설치

두 개의 컴퓨터를 사용하여 hadoop 클러스터 위에서 돌아가는 spark 클러스터를 설치한다.각각 master, worker1라고 한다.이미 hadoop cluster가 구축되어있다는 가정 하에 진행한다.\[hadoop] Cluster 설치 참고

velog.io

 

Hadoop Cluster 위에서 동작하는 Spark를 설치하는 것이므로 먼저 Hadoop Cluster를 설치해야 한다.

이 글을 참고하여 먼저 Hadoop Cluster를 구성해주자.

Spark를 설치한 환경은 1개의 Master, 2개의 Slave의 총 3개의 서버로 구성하였다.

아래의 정리한 메모에 따라 Master와 Slave의 모든 서버에 Spark를 설치해주자.

맨 앞에 $이 있는 것은 cmd 명령이다.

Ubuntu LTS 20.04, Docker 환경에서 Spark는 3.1.2, Hadoop은 3.2.2 버전을 설치하였다.

 

INSTALL SPARK

Spark의 설치는 Master와 Slave 모든 서버에서 동일하게 수행해야 한다.

\$ sudo su root

\$ wget https://dlcdn.apache.org/spark/spark-3.1.2/spark-3.1.2-bin-hadoop3.2.tgz

\$ tar -xzvf spark-3.1.2-bin-hadoop3.2.tgz

\$ mv spark-3.1.2-bin-hadoop3.2 /usr/local/spark

\$ vim ~/.bashrc

SPARK_HOME=/usr/local/spark
export PATH=\$PATH:\$SPARK_HOME/bin:\$SPARK_HOME/sbin 

\$ source ~/.bashrc

 

\$ vim \$SPARK_HOME/conf/slaves

slave1
slave2
slave3

 

\$ vim \$SPARK_HOME/conf/spark-env.sh

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export SPARK_MASTER_HOST=master
export HADOOP_HOME=/usr/local/hadoop
export YARN_CONF_DIR=\$HADOOP_HOME/etc/hadoop
export HADOOP_CONF_DIR=\$HADOOP_HOME/etc/hadoop

 

START SPARK

Spark의 시작은 Master 서버에서만 수행하면 된다.

start-all.sh는 hadoop이랑 같으니 실행할 때 조심하자.

\$ \$SPARK_HOME/sbin/start-all.sh

\$ \$SPARK_HOME/sbin/start-history-server.sh

 

STOP SPARK

Spark의 중지는 Master 서버에서만 수행하면 된다.

\$ \$SPARK_HOME/sbin/stop-all.sh

\$ \$SPARK_HOME/sbin/stop-history-server.sh

\$ rm -rf \$SPARK_HOME/evevntLog/*

 

SPARK Web UI

Spark Context

http://172.17.0.2:4040 (Spark 실행 중일 때만 접근 가능)

 

Spark Master

http://172.17.0.2:8080

 

Spark Worker

http://master:8081, http://worker1:8081

 

Spark History Server

http://172.17.0.2:18080

 

 

Pyspark, Anaconda, Jupyter 환경 설정

Pyspark, Anaconda, Jupyter를 설치한다면 데이터 분석에 강력한 환경을 구성할 수 있다.

Python으로 머신러닝이나 EDA를 조금만 해본 사람들이라면 충분히 공감할 것이다.

Python 라이브러리를 이용한다면 상당한 수준의 시각화까지 가능하기 때문에 가능하다면 이것들을 꼭 구축해주자.

 

\$ wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh

\$ bash Anaconda3-2021.05-Linux-x86_64.sh

\$ vim ~/.bashrc

export CONDA_HOME=/root/anaconda3
export PATH=$PATH:$CONDA_HOME/bin:$CONDA_HOME/condabin
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=jupyter
export PYSPARK_DRIVER_PYTHON_OPTS='notebook --allow-root'

\$ source ~/.bashrc

--allow-root는 Linux의 root 계정으로 접근하려고 할 때 필요하다.

보안 상 root로 해선 안 되지만, 어차피 프로토타입과 테스트용도이기 때문에 보안은 고려하지 않았다.

\$ conda config --set auto_activate_base False

 

Juptyer 설치와 외부 접속 설정

\$ pip install jupyter

\$ jupyter notebook --generate-config

\$ vim /root/.jupyter/jupyter_notebook_config.py

c.NotebookApp.notebook_dir = '/data'
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'argon2:$argon2id$v=19$m=10240,t=10,p=8$sL7D/JnuIIgzWZqnu/ZISg$ps3ZEFmrD5Q/mKmI0dFWpQ'
c.NotebookApp.port = 8888
c.NotebookApp.ip = '172.17.0.2'
c.NotebookApp.allow_origin = '*'

 

보라색 비밀번호 생성

\$ python   (파이썬 프롬프트 접근)

from notebook.auth import passwd
passwd()

출력되는 문자열을 복사하여 c.NotebookApp.password의 값으로 붙여넣자.

 

Pyspark 실행

\$ \$SPARK_HOME/bin/pyspark

실행하면 Jupyter Notebook이 뜬다.

 

 

참고 블로그

https://surpassing.tistory.com/824

 

Jupyter 외부 접속 설정

Jupyter 외부 접속 설정 jupyter 설치 pip 실행 환경을 구성합니다. (Anaconda, MiniConda, Python 중 하나를 설치합니다.) 이 후 jupyter 를 설치합니다. pip install jupyter 설정 파일 생성 jupyter notebook -..

surpassing.tistory.com

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=syung1104&logNo=221064685156 

 

[Spark] Apache Spark 사용해보기 - 0. 사전작업

● 사전작업 ※ python과 jdk를 설치하는 작업으로서, 이미 설치 되어있다면 바로 'Apache Spark 사용해...

blog.naver.com

 

https://ieworld.tistory.com/12

 

[우분투/Ubuntu 20.04] 우분투에 아나콘다 설치 / Install Anaconda on Ubuntu

파이썬 IDLE는 설치했지만 이것만 쓸 수는 없기에 대부분의 파이썬 유저들이 사용하는 아나콘다라는 툴을 설치하자 먼저 아나콘다 공식 홈페이지에 들어가서 Individual Edition을 다운받아준다 - www.

ieworld.tistory.com

'Tips' 카테고리의 다른 글

Apache Flume 설치  (1) 2021.10.18
Apache Hadoop Cluster 구성  (1) 2021.10.10
Hadoop의 standalone 설치 방법  (0) 2021.10.08
Python의 가독성과 OOP에 대한 개인적인 견해  (0) 2021.09.29
스킨 추천  (0) 2021.05.07
admin