- 이 글은 Apache Spark(아파치 스파크) 설치 및 환경 설정에 관해 설명하고 있으며 https://dschloe.github.io/python/python_edu/00_settings/spark_installation_windows_10/ 블로그를 참고하여 작성 한 것입니다.
사전준비
- Python3 가 설치가 되어야 가능하기 때문에 설치가 되어있지 않다면 아나콘다(Anaconda)에 접속하여 설치 바랍니다.
다운로드 전 필수 확인사항
- 스파크 설치 전에는 반드시 체크해야 하는 사항이 있다. (System Compatibility)
- 2022년 1월 기준은 아래와 같다.
Get Spark from the downloads page of the project website. This documentation is for Spark version 3.2.0. Spark uses Hadoop’s client libraries for HDFS and YARN. Downloads are pre-packaged for a handful of popular Hadoop versions. Users can also download a “Hadoop free” binary and run Spark with any Hadoop version by augmenting Spark’s classpath. Scala and Java users can include Spark in their projects using its Maven coordinates and Python users can install Spark from PyPI.
If you’d like to build Spark from source, visit Building Spark.
Spark runs on both Windows and UNIX-like systems (e.g. Linux, Mac OS), and it should run on any platform that runs a supported version of Java. This should include JVMs on x86_64 and ARM64. It’s easy to run locally on one machine — all you need is to have java
installed on your system PATH
, or the JAVA_HOME
environment variable pointing to a Java installation.
Spark runs on Java 8/11, Scala 2.12, Python 3.6+ and R 3.5+. Python 3.6 support is deprecated as of Spark 3.2.0. Java 8 prior to version 8u201 support is deprecated as of Spark 3.2.0. For the Scala API, Spark 3.2.0 uses Scala 2.12. You will need to use a compatible Scala version (2.12.x).
For Python 3.9, Arrow optimization and pandas UDFs might not work due to the supported Python versions in Apache Arrow. Please refer to the latest Python Compatibility page. For Java 11, -Dio.netty.tryReflectionSetAccessible=true
is required additionally for Apache Arrow library. This prevents java.lang.UnsupportedOperationException: sun.misc.Unsafe or java.nio.DirectByteBuffer.(long, int) not available
when Apache Arrow uses Netty internally.
자바 설치
- 자바를 설치한다. 설치 파일은 아래 링크에서 각자 환경에 맞는 프로그램을 다운로드 받는다.
- JAVA: https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
- 설치 시, 오라클 로그인이 필요 할 수도 있으므로 계정이 없는 경우 생성 후 시도 바랍니다.
Step 01. 설치
다운로드 파일을 관리자로 실행한다. 계속 Next 버튼 클릭 후, 아래 파일에서 경로를 수정한다. (이 때,
Program Files
공백이 있는데, 이러한 공백은 환경 설치 시 문제가 될 수 있다.)
Foder name(경로)를 아래와 같이 변경 후 OK 클릭을 하면 설치가 완료된다.
이번에는 자바 런타임 환경의 폴더도 동일하게 변경해준다. (변경 클릭 후 수정)
- C드라이브 경로에
jre
폴더를 생성하고 저장한다.
- C드라이브 경로에
Spark 설치
(1) Spark file 설치
- 아래 링크를 통해 Spark를 설치한다.
밑줄 친 항목 버전 확인 후 3번째 줄인 spark-3.2.1-bin-hadoop3.2.tgz 클릭
HTTP 아래에 있는 페이지를 클릭하면 다운로드 받을 수 있다.
(2) WinRAR 프로그램 다운로드
.tgz
파일 압축을 풀기 위해WinRAR
을 설치한다.링크에 들어가면 아래 화면이 보이는데 각 컴퓨터 환경에 맞게 설치 바랍니다.
다운로드가 완료 되면 위 과정 (1)에서 설치했던
spark-3.2.0-bin-hadoop3.2.tgz
파일 압축 풀기(Extract) 실행
(3) spark 폴더 생성 및 파일 이동
C드라이브 안에
spark
라는 새로운 폴더 생성 후 앞 서 압축을 풀었던 파일spark-3.2.0-bin-hadoop3.2
폴더 내 모든 파일을 생성한spark
폴더로 옮긴다.
(4) log4j.properties 파일 수정
conf
-[log4j.properties](http://log4j.properties)
파일을 연다.
해당 파일을 메모장으로 연 후(필자는 vscode로 연결), 아래에서 빨간줄을 친
log4j.rootCategory=INFO
에서INFO
→ERROR
로 변경한다.작업 실행 시, 출력하는 모든 logs 값들을 없앨 수 있다.
winutils 설치
이번에는 스파크가 윈도우 로컬 컴퓨터가 Hadoop을 착각하게 만들 프로그램이 필요하다.
설치파일: https://github.com/cdarlint/winutils
여기에서 최신 버전의 winutils를 다운로드 받는다.
필자는 hadoop-3.2.2 버전을 다운로드 받았다.
C드라이브에서 winutils란 이름의 폴더를 생성한 후, 앞서 받은 hadoop-3.2.2 파일의 bin 폴더를 옮긴다.
이 파일이 Spark 실행 시, 오류 없이 실행될 수 있도록 CMD 프로그램에서 파일 사용 권한을 얻도록 한다.
- CMD 프로그램을 관리자 권한으로 실행 후 아래 코드 입력
1
2C:\Windows\system32>cd c:\winutils\bin # 경로 변경
c:\winutils\bin> winutils.exe chmod 777 \tmp\hive만약, ChangeFileModeByMask error (3) 에러 발생 시, C드라이브에
tmp\hive
폴더를 차례대로 생성을 한다.
환경변수 설정
- 시스템 환경 변수를 설정한다.
시스템 환경 변수 검색 후 클릭
환경 변수 클릭
각 사용자 계정에
사용자 변수 - 새로 만들기 버튼
을 클릭
SPARK_HOME 환경 변수를 설정한다.
JAVA_HOME 환경 변수를 설정한다.
HADOOP_HOME 환경 변수를 설정한다.
이번에는
PATH
변수를 편집한다.
아래 코드를 추가한다.
%SPARK_HOME%\bin
%JAVA_HOME%\bin
파이썬 환경 설정
Python 환경 설정을 추가한다.
스파크 테스트
CMD 파일을 열고
c:\spark
폴더로 경로를 설정 한 뒤pyspark
로 실행1
2cd c:\spark # 경로를 c:\spark 로 설정
pyspark # 실행
해당
[README.md](http://README.md)
파일을 불러와서 아래 코드가 실행되는지 확인한다.1
2
3
4>>> rd = sc.textFile("README.md")
>>> rd.count()
109
>>>