Ubuntu 20.04에 Apache Spark를 설치하는 방법
이 페이지에서
- 전제 조건
- 시작하기\n
- 자바 설치
- Scala 설치
- Apache Spark 설치
- Spark 마스터 서버 시작
- Spark 작업자 프로세스 시작\n
- Spark Shell 작업
- 결론
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 클러스터 구성을 시작하기 전에 기본 테스트를 수행할 수 있습니다. 궁금한 점이 있으면 언제든지 문의해 주세요.