웹사이트 검색

Ubuntu 20.04에 Apache Spark를 설치하는 방법


이 페이지에서

  1. 전제 조건
  2. 시작하기\n
  3. 자바 설치
  4. Scala 설치
  5. Apache Spark 설치
  6. Spark 마스터 서버 시작
  7. Spark 작업자 프로세스 시작\n
  8. Spark Shell 작업
  9. 결론

Apache Spark는 오픈 소스 프레임워크이자 범용 클러스터 컴퓨팅 시스템입니다. Spark는 일반적인 실행 그래프를 지원하는 Java, Scala, Python 및 R에서 높은 수준의 API를 제공합니다. 스트리밍, SQL, 기계 학습 및 그래프 처리에 사용되는 내장 모듈이 함께 제공됩니다. 대량의 데이터를 분석하여 클러스터 전체에 분산하여 데이터를 병렬로 처리할 수 있습니다.

이 튜토리얼에서는 Ubuntu 20.04에 Apache Spark 클러스터 컴퓨팅 스택을 설치하는 방법을 설명합니다.

전제 조건

  • Ubuntu 20.04 서버를 실행하는 서버.\n
  • 루트 암호는 서버에 구성됩니다.\n

시작하기

먼저 시스템 패키지를 최신 버전으로 업데이트해야 합니다. 다음 명령으로 모두 업데이트할 수 있습니다.

apt-get update -y

모든 패키지가 업데이트되면 다음 단계로 진행할 수 있습니다.

자바 설치

Apache Spark는 Java 기반 애플리케이션입니다. 따라서 시스템에 Java가 설치되어 있어야 합니다. 다음 명령으로 설치할 수 있습니다.

apt-get install default-jdk -y

Java가 설치되면 다음 명령을 사용하여 설치된 Java 버전을 확인합니다.

java --version

다음 출력이 표시되어야 합니다.

openjdk 11.0.8 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

스칼라 설치

Apache Spark는 Scala를 사용하여 개발되었습니다. 따라서 시스템에 Scala를 설치해야 합니다. 다음 명령으로 설치할 수 있습니다.

apt-get install scala -y

스칼라 설치 후. 다음 명령을 사용하여 Scala 버전을 확인할 수 있습니다.

scala -version

다음 출력이 표시되어야 합니다.

Scala code runner version 2.11.12 -- Copyright 2002-2017, LAMP/EPFL

이제 다음 명령을 사용하여 Scala 인터페이스에 연결합니다.

scala

다음과 같은 결과가 표시되어야 합니다.

Welcome to Scala 2.11.12 (OpenJDK 64-Bit Server VM, Java 11.0.8).
Type in expressions for evaluation. Or try :help.

이제 다음 명령으로 Scala를 테스트합니다.

scala> println("Hitesh Jethva")

다음 출력이 표시되어야 합니다.

Hitesh Jethva

아파치 스파크 설치

먼저 공식 웹 사이트에서 최신 버전의 Apache Spark를 다운로드해야 합니다. 이 튜토리얼을 작성할 당시 Apache Spark의 최신 버전은 2.4.6입니다. 다음 명령을 사용하여 /opt 디렉토리에 다운로드할 수 있습니다.

cd /opt
wget https://archive.apache.org/dist/spark/spark-2.4.6/spark-2.4.6-bin-hadoop2.7.tgz

다운로드가 완료되면 다음 명령을 사용하여 다운로드한 파일의 압축을 풉니다.

tar -xvzf spark-2.4.6-bin-hadoop2.7.tgz

다음으로 추출된 디렉토리의 이름을 아래와 같이 spark로 바꿉니다.

mv spark-2.4.6-bin-hadoop2.7 spark

다음으로 Spark 명령을 쉽게 실행할 수 있도록 Spark 환경을 구성해야 합니다. .bashrc 파일을 편집하여 구성할 수 있습니다.

nano ~/.bashrc

파일 끝에 다음 줄을 추가합니다.

export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin

파일을 저장하고 닫은 후 다음 명령을 사용하여 환경을 활성화합니다.

source ~/.bashrc

스파크 마스터 서버 시작

이 시점에서 Apache Spark가 설치되고 구성됩니다. 이제 다음 명령을 사용하여 Spark 마스터 서버를 시작합니다.

start-master.sh

다음 출력이 표시되어야 합니다.

starting org.apache.spark.deploy.master.Master, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.master.Master-1-ubunt4.out

기본적으로 Spark는 포트 8080에서 수신 대기합니다. 다음 명령을 사용하여 확인할 수 있습니다.

ss -tpln | grep 8080

다음 출력이 표시되어야 합니다.

LISTEN   0        1                               *:8080                *:*      users:(("java",pid=4930,fd=249))   

이제 웹 브라우저를 열고 URL http://your-server-ip:8080을 사용하여 Spark 웹 인터페이스에 액세스합니다. 다음 화면이 표시됩니다.

Spark 작업자 프로세스 시작

보시다시피 Spark 마스터 서비스는 spark://your-server-ip:7077에서 실행 중입니다. 따라서 이 주소를 사용하여 다음 명령을 사용하여 Spark 작업자 프로세스를 시작할 수 있습니다.

start-slave.sh spark://your-server-ip:7077

다음 출력이 표시되어야 합니다.

starting org.apache.spark.deploy.worker.Worker, logging to /opt/spark/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-ubunt4.out

이제 Spark 대시보드로 이동하여 화면을 새로 고칩니다. 다음 화면에 Spark 작업자 프로세스가 표시되어야 합니다.

스파크 셸 작업

명령줄을 사용하여 Spark 서버에 연결할 수도 있습니다. 아래와 같이 spark-shell 명령을 사용하여 연결할 수 있습니다.

spark-shell

연결되면 다음 출력이 표시됩니다.

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/opt/spark/jars/spark-unsafe_2.11-2.4.6.jar) to method java.nio.Bits.unaligned()
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
20/08/29 14:35:07 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Spark context Web UI available at http://ubunt4:4040
Spark context available as 'sc' (master = local[*], app id = local-1598711719335).
Spark session available as 'spark'.
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 2.4.6
      /_/
         
Using Scala version 2.11.12 (OpenJDK 64-Bit Server VM, Java 11.0.8)
Type in expressions to have them evaluated.
Type :help for more information.

scala> 

Spark에서 Python을 사용하려는 경우. pyspark 명령줄 유틸리티를 사용할 수 있습니다.

먼저 다음 명령을 사용하여 Python 버전 2를 설치합니다.

apt-get install python -y

설치가 완료되면 다음 명령을 사용하여 Spark를 연결할 수 있습니다.

pyspark

연결되면 다음과 같은 결과가 표시됩니다.

Python 2.7.18rc1 (default, Apr  7 2020, 12:05:55) 
[GCC 9.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.spark.unsafe.Platform (file:/opt/spark/jars/spark-unsafe_2.11-2.4.6.jar) to method java.nio.Bits.unaligned()
WARNING: Please consider reporting this to the maintainers of org.apache.spark.unsafe.Platform
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
20/08/29 14:36:40 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_\   version 2.4.6
      /_/

Using Python version 2.7.18rc1 (default, Apr  7 2020 12:05:55)
SparkSession available as 'spark'.
>>> 

마스터와 슬레이브 서버를 중지하려는 경우. 다음 명령으로 수행할 수 있습니다.

stop-slave.sh
stop-master.sh

결론

축하합니다! Ubuntu 20.04 서버에 Apache Spark를 성공적으로 설치했습니다. 이제 Spark 클러스터 구성을 시작하기 전에 기본 테스트를 수행할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.