처음엔 x눅스에서만 지원한다는 말을 듣고 Cygwin을 설치하여 Spark를 실행해보았지만,
명령어를 치면 Java 에러나 환경변수를 설정하라 뜨고 진행이 되지 않았다.
에러를 해결하려고 StackOverflow 여기저기를 돌아다니다가
Windows에서 설치하는 방법을 찾아 cmd로 실행하니 명령어가 잘 작동하였다...-_-
Spark가 Windows에서 잘 작동하는지 확인하기 위해 실행한 명령어는
텍스트 파일의 줄 개수를 세는 코드이다. Spark 공식 홈페이지에도 나와있다.
1 2 | lines = sc.textFile("README.md") lines.count() | cs |
윈도우에서 이 코드의 실행 결과를 확인해보았다.
먼저, 테스트한 컴퓨터의 OS와 설치한 프로그램의 버전이다. 하나라도 버전이 다를 경우 작동하지 않을 수 있다.
- Windows 10 (x64)
- Java JDK 1.7.0.80 (x86)
- Python 2.7.12
- Spark 2.0.2 (Hadoop 2.7)
이제 Windows 환경에서 Apache Spark를 실행하기 위해 프로그램을 설치하는 절차이다.
1. 먼저 버전이 7 이상인 Java JDK를 설치한다.
설치 완료 후, 설치된 경로를 찾아 시스템 환경변수에 "JAVA_HOME"라고 추가한다.
예를 들면, 변수 값이 "C:\Program Files (x86)\Java\jdk1.7.0_80"가 될 것이다.
3. winutils.exe 프로그램을 HortonWorks 저장소나 git에서 다운받는다.
로컬에 설치된 하둡이 없기 때문에 bin 디렉토리를 Hadoop 디렉토리에 만들고
해당 경로에 대해 "HADOOP_HOME"이라는 환경 변수를 설정해야 한다.
예를 들면, C:\Hadoop 폴더를 변수 값으로 설정하고, C:\Hadoop\bin 폴더에 다운받은 exe 파일을 집어넣는 것이다.
하둡을 로컬에 설치한 것처럼 보이게 하는 야매방법인 것 같다.
3. 다음으로 Python 홈페이지에서 Python을 설치한다.
설치가 완료되면, 설치된 경로를 사용자 환경변수로 추가한다.
예를 들면, 변수 "path"에 값은 "C:\Python27"이다.
4. 다음으로 Apache Spark를 설치한다. Pre-built 버전으로 설치하고 압축을 해제시킨다.
C 드라이브에 적당한 이름의 폴더를 추가하여 옮긴 다음, 시스템 환경변수를 추가한다.
변수명은 "SPARK_HOME"이고, 값은 "C:\[생성 폴더명]\spark-2.0.2-bin-hadoop2.7"이다. (추가 안해도 잘 된다.)
사용자변수 중 path에 "C:\[생성 폴더명]\spark-2.0.2-bin-hadoop2.7\bin"도 추가한다. (마찬가지로 안해도 잘 된다.)
[ 잠깐 ] 환경 변수 정리
- 사용자 변수
path = C:\Python27 (Python 설치 경로)
- 시스템 변수 (잘 확인하고 붙여넣기 하라우. 환경에 따라 불필요한 항목이 있을 수 있음.)
HADOOP_HOME = C:\hadoop
JAVA_HOME = C:\Program Files (x86)\Java\jdk1.7.0_80
6. cmd 창을 연다. spark를 압축 해제한 폴더로 가서 "bin\pyspark" 를 실행한다. 따옴표를 꼭 붙여야한다.
7. spark가 실행되고 입력 란이 >>>로 바뀌면 아래 명령어를 실행한다.
1 2 | lines = sc.textFile("README.md") lines.count() | cs |
결과 :
7-1. 만약 위 과정에서 자바 에러가 뜬다면
먼저,
1 | os.path.exist("README.md") | cs |
을 실행하여 파일 존재 여부를 확인한다.
그리고,
1 2 | import os os.getcwd() | cs |
(Get Current Working Directory 의 준말)
를 한 줄 한 줄 입력하여 현재 실행 위치를 확인하고,
그 위치에 텍스트 파일을 생성한 다음, 아무거나 여러 줄 입력한다.
실행하고나면 겁나 간단한 코드인데 성공하지까지 생각보다 꽤 걸렀다...
설치 파일간 버전에 따른 호환 여부나, 환경변수 설정에 따라 아예 실행이 안될 수도 있으니 유의해야한다.
참고 링크 : StackOverflow
'컴퓨터' 카테고리의 다른 글
맥에서 Apache + PHP 사용하기 (0) | 2017.05.28 |
---|---|
[Linux] x86_64와 i386에 대하여 (0) | 2016.12.26 |
Blender로 3DS 파일 다루기 - vertex의 좌표 확인하기 (0) | 2016.12.13 |
Blender로 3DS 파일 다루기 - 좌표로 vertex의 위치 확인하기 (0) | 2016.12.13 |
문자와 인코딩 개념 정리 (Unicode, UTF-8, UTF-16, ASCII, EUC-KR) (0) | 2016.11.10 |