CentOS 8 환경(VirtaulBox를 이용한 가상 환경)에서 Spark를 설치해보겠습니다.

  이 포스트를 작성하는 시점에 최종 릴리즈 버전은 2.4.6이지만,
  테스트 환경의 자바 버전이 JDK 7인 관계로 2.1.3 버전을 설치하고자 합니다.

  설치 환경 정보는 아래와 같습니다.

- Spark : 2.1.3
- Hadoop : 2.10.0
- OS : CentOS 8 (VirtualBox 6)
- Java : JDK 7 

 

1. Spark 설치 파일 다운로드

  Spark 설치 파일을 다운로드하기 위해 아래 spark 다운로드 사이트에 접속합니다.

  *  URL : https://spark.apache.org/downloads.html

  이번에 설치할 Spark 2.1.3 버전은 최신 릴리즈 버전이 아니므로 홈페이지 하단에 'Spark release archives'를 클릭하여 아카이브 페이지에 접속합니다.

 

  아카이브의 Spark-2.1.3 하위 디렉토리에 접속하면 위와 같은 설치 파일을 확인하실 수 있습니다.

  이 포스트에서는 Hadoop이 설치된 환경에서 Spark를 설치할 계획이므로 'spark-2.3.4-bin-without-hadoop.tgz' 파일을 사용하도록 하겠습니다.

 

  위 설치파일의 링크 주소를 복사한 뒤 wget을 이용해 파일을 로컬에 다운로드합니다.

 

> sudo wget https://archive.apache.org/dist/spark/spark-2.1.3/spark-2.1.3-bin-without-hadoop.tgz

  참고로 Hadoop 설치 방법은 아래 포스트에서 확인할 수 있습니다.

 

하둡(Hadoop) 설치하기[#1] - 설치 준비

데스크탑이 너무 느려져서 포맷을 했더니, VirtualBox에서 하둡 관리노드가 있던 가상 OS만 복구가 안되는 상황을 맞이하게 되었습니다.;; 이번 기회에 다시 한번 하둡을 설치하면서 여기에 그 과정

sparkdia.tistory.com

 

 

2. 설치 파일 압축 해제

  다운로드 한 파일을 압축해제합니다.

 

  > sudo tar -xvzf ./spark-2.1.3-bin-without-hadoop.tgz

 

  압축 해제된 파일의 소유자를 변경하고 디렉토리명을 spark-2.1.3으로 변경합니다.

  > sudo chown -R hduser:hadoop ./spark-2.1.3-bin-without-hadoop
  > sudo mv spark-2.1.3-bin-without-hadoop spark-2.1.3

 

 

3. 환경 변수 설정

  사용자 홈 디렉토리 내 .bashrc 파일을 열어 아래와 같이 환경변수와 PATH를 추가해줍니다.

export SPARK_HOME=/usr/local/spark-2.1.3
export PATH=$PATH:$SPARK_HOME/bin

 

  하둡이 포함되지 않은 설치 파일을 다운로드한 경우 하둡의 CLASSPATH를 설정해줘야 합니다.

  $SPARK_HOME/conf/spark-env.sh 파일을 생성하고 아래와 같이 입력합니다.

export SPARK_DIST_CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath)

 

 

4. 실행 테스트 1

  ${SPARK_HOME}/bin./spark-shell을 실행하여 설정이 정상적으로 완료되었는지 확인해봅니다.

  > spark-shell

  위와 같은 Welcome 메시지가 출력되면 정상적으로 설정된 것입니다.

 

  만약, spark-shell 실행 시 아래와 같은 에러 로그가 출력된다면 SPARK_DIST_CLASSPATH 설정이 잘못된 것입니다.

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FSDataInputStream

 

  위와 같은 에러가 발생한다면 점검을 위해 직접 쉘 프롬프트에서 classpath 설정 구문을 테스트해보는 것도 하나의 해결 방법이 될 것입니다.

  > export SPARK_DIST_CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath)
  > echo $SPARK_DIST_CLASSPATH

 

  아래와 같이 실제로 hadoop 명령어가 제대로 작동되는지 확인하는 것도 하나의 해결 방법이 될 수 있습니다.

 

 > ${HADOOP_HOME}/bin/hadoop classpath

 

 

5. Spark 서비스 시작 및 종료

  ${SPARK_HOME}/sbin/start-all.sh을 실행하면 Spark 서비스를 시작할 수 있습니다.

  > ${SPARK_HOME}/sbin/start-all.sh

  jps 실행 시 Master와 Wroker 프로세스가 확인된다면 정상적으로 Spark 서비스가 시작된 것입니다.

 

  웹 브라우저에서 아래 URL(기본 포트 : 8080)을 통해 Spark Web UI를 확인하실 수 있습니다.

* URL : http://서버IP:8080

 

  Spark 서비스 종료는 ${SPARK_HOME}/sbin/stop-all.sh을 실행하면 됩니다.

  > ${SPARK_HOME}/sbin/stop-all.sh

 

 

6. 실행 테스트 2

  spark-submit을 통해서 작성된 Spark application을 실행할 수 있습니다.

  Spark에서 제공하는 SparkPi 샘플 프로그램을 yarn 환경에서 cluster 모드로 실행하는 명령어는 아래와 같습니다.

spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
${SPARK_HOME}/examples/jars/spark-examples*.jar \
10

  위 명령어를 실행하면 아래와 같이 Hadoop resource manager 웹 페이지에서 spark application이 실행된 것을 확인하실 수 있습니다.

 

 

[Ref.] https://spark.apache.org/docs/2.1.3/hadoop-provided.html

 

'BigData > Spark' 카테고리의 다른 글

스파크(Spark) 3.0.0 설치 on Windows 10  (0) 2020.06.28
스파크(Spark) 실행하기 on Databricks  (2) 2020.06.22

+ Recent posts