간단한 기능 테스트를 위한 Spark Standalone 설치 방법을 설명한다.

Spark 에서 yarn 과 HDFS 를 사용할 수 있도록 하기 위해, Hadoop standalone 설치 방법을 참고한다.

localhost 에 설치할 것이고, 각종 옵션 등의 설명은 없다.

오로지 기능 테스트를 위해 간단하게만 설치한다.

docker 를 이용하면 쉽게 설치할 수 있지만, 여기서는 그냥 local 에 곧바로 설치한다.

 

 

< 환경 >

 

Ubuntu 20.04.2 LTS 64비트

java 가 local 에 1.8 이상 버전으로 설치되어 있어야 한다.

설치하는 dir 는 /home/eye/standalone 이라고 하자.

 

 

 

 

< Spark Standalone >

 

Spark download : spark.apache.org/downloads.html

 

Downloads | Apache Spark

Download Apache Spark™ Choose a Spark release: Choose a package type: Download Spark: Verify this release using the and project release KEYS. Note that, Spark 2.x is pre-built with Scala 2.11 except version 2.4.2, which is pre-built with Scala 2.12. Spar

spark.apache.org

 

원하는 버전의 binary 를 다운받는다.

나의 경우 spark-3.1.1-bin-hadoop3.2 버전을 받으려고 한다.

 

wget https://downloads.apache.org/spark/spark-3.1.1/spark-3.1.1-bin-hadoop3.2.tgz --no-check-certificate

 

압축을 해제한다.

 

tar zxvf spark-3.1.1-bin-hadoop3.2.tgz 

 

압축이 풀리면 spark-3.1.1-bin-hadoop3.2 dir 가 생긴다.

이제부터 Spark home(SPARK_HOME) 의 path 는 /home/eye/standalone/spark-3.1.1-bin-hadoop3.2 이다.

아래 설명부터, SPARK_HOME 이라고 된 부분을

/home/eye/standalone/spark-3.1.1-bin-hadoop3.2 로 대체해서 생각하면 된다.

 

SPARK_HOME/conf 로 이동한다.

 

다음 명령어를 통해 사용할 conf 의 접미사를 없애준다.

 

mv spark-env.sh.template spark-env.sh
mv spark-defaults.conf.template spark-defaults.conf

 

spark-env.sh 의 마지막에 다음의 내용을 추가한다.

아래 HADOOP 관련 path 가 왜 이렇게 나왔는지는 HADOOP standalone 설치 글 을 참고

 

export HADOOP_CONF_DIR=/home/eye/standalone/hadoop-3.3.0/etc/hadoop

 

여기서 아래 이탤릭체인것은 선택사항임. 해도 되고 안 해도 되고

 

SPARK_HOME 에 spark-events dir 를 생성한다.

이는 spark event log 등을 저장하기 위한 path 이다.

굳이 아래 경로로 만들 필요는 없고, 설치하는 사람 마음대로 지정하면 된다.

 

mkdir SPARK_HOME/spark-events

 

spark-defaults.conf 의 마지막에 다음의 내용을 추가한다.

 

spark.master yarn
spark.eventLog.enabled true
spark.eventLog.dir file:SPARK_HOME/spark-events
spark.history.fs.logDirectory file:SPARK_HOME/spark-events

 

참고로 위의 spark.eventLog.dir 와 spark.history.fs.logDirectory path 는

file 이 아니라 hdfs 로 지정해도 된다.

 

다음 명령어를 통해 spark-shell 을 실행시켜본다.

실행 전 hdfs 와 yarn 이 실행중이어야 한다.

 

SPARK_HOME/bin/spark-shell --master yarn

 

spark 실행 명령어 사용시 binary 를 직접 지정하여 사용한다.

왜냐면 여기선 bin path 지정을 하지 않았으니까(테스트 용도)

 

간단하게 df 를 통해 hdfs 내의 데이터를 읽어본다.

 

val df = spark.read.text("/hdfs/data/path.txt")
df.show(5)

 

 

 

 

< 참고 >

 

file:SPARK_HOME/spark-events 를 생성하지 않은 상태로 spark-shell 를 실행시키면

아래 exception 이 뜬다.

 

21/03/26 09:39:40 ERROR SparkContext: Error initializing SparkContext.
java.io.IOException: Incomplete HDFS URI, no host: file:SPARK_HOME/spark-events

 

 

+ Recent posts