Ubuntu 환경에서 Apache Spark 설치하기
아파치 스파크(Apache Spark)는 대규모 분산 데이터 처리를 위해 설계된 통합형 엔진입니다. 이번 포스트에서는 ubuntu 서버 환경에 spark를 설치하고, 구성하는 방법에 대해 알아보려고 합니다.
실습 환경
- Google Compute Engine: e2-medium(2 vCPU, 4GB memory), 20GB storage
- Ubuntu 22.04, x86/64
- Windows PowerShell에서 SSH로 원격 접속, Zsh
- OpenJDK 17.0.7
- Python 3.10.6
- Apache Spark 3.4.1
사전 작업
apt 설치 도구를 업데이트하고 spark 설치에 필요한 도구인 vim과 wget을 설치합니다.
Apache Spark 3.4.0 이상의 버전은 python 3.8 이상 버전에서 실행됩니다. Ubuntu에는 python이 내장되어 있으므로 spark 구성 이전에 python 버전을 먼저 확인하고 버전이 맞지 않다면 상위 버전의 python을 설치합니다.
sudo apt update
sudo apt upgrade
sudo apt install vim wget
# 파이썬 버전 확인하기
python3 --version
JDK 설치하기
Spark는 2023년 7월 현재 Oracle의 지원을 받는 LTS 버전인 Java 8/11/17 에서 실행됩니다. 다만 Java 8의 경우 특정 마이너 버전 이전 버전에서는 Spark 3.4.0 이상 버전이 더 이상 실행되지 않고, Java 11의 경우 추가 라이브러리 설정이 필요합니다. 따라서 마이너 버전 관리나 추가 설정의 부담이 없는 Java 17을 설치합니다. 벤더의 경우 일반적인 Open JDK를 설치했습니다.
# Open JDK 17 설치하기
sudo apt install openjdk-17-jdk
java -version
Scala는?
Apache Spark는 2023년 7월 현재 scala 2.12/2.13 버전에서 실행됩니다. 그럼에도 사전에 scala를 설치할 필요가 없는데, 이번 실습에서 사용할 spark 설치 파일에는 scala 2.12가 사전 구축(pre-built)되어 있기 때문입니다. 앞으로의 spark 포스트는 pyspark를 기반으로 작성할 계획이므로 scala 언어 설치를 생략하려 합니다.
Scala의 가장 최신 버전은 scala 2가 아닌 scala 3 입니다. 혹여나 scala 3를 설치했다 하더라도 spark는 내장된 scala 2 위에서 작동됩니다. Scala로 spark 개발 환경을 구성하려 하는 경우 주의해야 합니다.
Apache Spark 설치하기
다음의 링크에 접속합니다.
원하는 spark 버전과 종류를 선택합니다. 실습에서는 다운로드 페이지 초기 화면에 설정된 scala 2.12 버전이 사전 구축(pre-built)된 spark 3.4.1 버전을 선택했습니다. 이후 생성된 다운로드 링크에 접속합니다.
다운로드 링크에 접속하면 이전 다운로드 페이지에서 선택한 버전의 spark의 .tgz
설치 파일 다운로드 주소를 볼 수 있습니다. 이 주소를 그대로 복사합니다.
다시 터미널로 돌아가서, wget
명령어와 복사한 링크로 ubuntu에 spark 설치 .tgz
파일을 다운로드합니다. 다운로드한 파일은 압축 해제한 뒤 내용물을 root
디렉토리 아래의 opt/spark
디렉토리 내부로 옮깁니다.
.tgz
파일명은 설치하는 spark의 버전에 따라 다르므로 아래의 명령어를 무작정 복사, 붙여넣기 하기보다 ls
명령어로 파일명을 파악해 알맞게 입력해야 합니다.
# .tgz 파일 다운로드
wget https://dlcdn.apache.org/spark/spark-3.4.1/spark-3.4.1-bin-hadoop3.tgz
# .tgz 파일 압축 해제
tar xvf spark-3.4.1-bin-hadoop3.tgz
# 압축 해제한 내용물을 /opt/spark 디렉토리 내부로 옮기기
sudo mv spark-3.4.1-bin-hadoop3/ /opt/spark
Spark를 더 간편하게 실행하기 위해 환경변수를 지정하려고 합니다. vim 편집기를 이용해 홈 디렉토리의 bash(또는 zsh) 설정 파일에 진입합니다.
# 기본 shell로 bash를 사용하는 경우
vim ~/.bashrc
기본 shell로 bash가 아닌 zsh를 사용하고 있는 경우 ~/.bashrc
파일이 아닌 ~/.zshrc
파일에 진입합니다.
설정 파일에 다음의 내용을 추가하고 저장합니다. Spark가 저장되어있는 위치인 /opt/spark
를 SPARK_HOME
이라는 이름으로 변수에 저장하고, /opt/spark/bin
과 /opt/spark/sbin
디렉토리를 환경 변수에 저장해 해당 디렉토리 내부의 실행 파일을 바로 실행할 수 있게 합니다.
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
vim에서 빠져 나온 이후, source 명령어를 이용해 설정 파일의 변동 사항을 바로 적용합니다.
# bash 설정 파일 적용
source ~/.bashrc
마찬가지로 기본 shell로 bash가 아닌 zsh를 사용하고 있는 경우 ~/.zshrc
파일을 적용합니다.
Apache Spark 실행하기
Python에서 import될 수 있는 pyspark의 반응형 인터프리터로 진입하기 위해서는 터미널에 pyspark
만 입력하면 됩니다. 앞서 설정한 환경 변수 덕분에 /opt/spark/bin/pyspark
실행 파일이 바로 실행됩니다.
# pyspark 실행하기
pyspark
마찬가지로 Scala에서 import될 수 있는 오리지널 spark의 인터프리터로 진입하기 위해서는 spark-shell
만 입력하면 됩니다. 마찬가지로 환경 변수 덕분에 /opt/spark/bin/spark-shell
실행 파일이 바로 실행됩니다.
# Spark Shell 실행하기
spark-shell
마무리
Apache Spark를 Ubuntu 환경에 구성하는 방법에 대해 알아보았습니다. 다음 포스트로는 러닝 스파크 2판 서적을 공부한 내용을 토대로 정리하여 업로드 하려고 합니다.
참고자료
- “Spark Overview”. Apache Spark 3.4.1. https://spark.apache.org/docs/latest/.
- Josphat Mutai. “Install Apache Spark on Ubuntu 22.04|20.04|18.04”. Computing for Geeks. 2022년 4월 17일. https://computingforgeeks.com/how-to-install-apache-spark-on-ubuntu-debian/.
- Jules S. Damji, Brooke Wenig, Tathagata Das, Denny Lee (2022). 러닝 스파크 (2판). (박종영, 이성수 역). 제이펍.