AWS에서 EMR
(Elastic Map Reduce, 클라우드 컴퓨팅)을 통해 Zeppelin
을 사용할 경우 실제 컴퓨팅 시간과 관계 없이 서버를 켜 놓은 시간에 비례하여 과금되기 때문에, 요금 폭탄을 맞기 십상이다. S3
, RDB
등 데이터 저장은 프리 티어 범위 안에서 가능하지만 EMR
은 해당되지 않는다. 그래서 Zeppelin
을 통해 pyspark를 사용하는 것은 로컬에서 설치하여 진행하기로 했다.
- 현재 Java(1.8.0_241 버전) 설치 후 환경 변수(PATH) 설정 완료 상태
1. Scala 설치
- 2.13.1 버전
brew install scala
vi ~/.bash_profile
에 다음 커맨드 추가export SCALA_HOME=/usr/local/Cellar/scala/2.13.1_1/libexec/ export PATH=$PATH:$SCALA_HOME/bin
source ~/.bash_profile
2. Spark 설치
- 2.4.5 버전
brew install apache-spark
vi ~/.bash_profile
에 다음 커맨드 추가export SPARK_HOME=/usr/local/Cellar/apache-spark/2.4.5/libexec/ export PATH=$PATH:$SPARK_HOME export SPARK_LOCAL_IP=127.0.0.1 # 로컬에서 spark를 실행시키는경우 필요한 부분.
source ~/.bash_profile
- 환경 변수들 확인
(base) Matthewui-MacBookPro:work matthew$ echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_241.jdk/Contents/Home/ (base) Matthewui-MacBookPro:work matthew$ echo $SCALA_HOME /usr/local/Cellar/scala/2.13.1_1/libexec/ (base) Matthewui-MacBookPro:work matthew$ echo $SPARK_HOME /usr/local/Cellar/apache-spark/2.4.5/libexec/
spark-shell
실행localhost:4040
에서 Spark UI 확인 가능- spark shell 종료:
System.exit(0)
ctrl + Z
로 터미널에서 빠져나갈 수는 있지만, 종료되지는 않는다.
pyspark
설치pip3 install pyspark
- 터미널에서
pyspark
명령어로 spark shell 실행 - shell 종료는 python과 똑같이
quit()
으로 가능
3. Zeppelin 설치
- Zeppelin은 현재 Homebrew로 설치할 수 없는 상태
- Zeppelin 홈페이지에서
.tgz
파일을 다운받아 설치해도 되는데, 필자는 이 경우 빌드가 성공적으로 되지 않는다. - 따라서 GitHub 저장소를 clone하여 설치
- Clone
git clone https://github.com/apache/zeppelin.git
cd folder
: 설치한 폴더로 들어가기
- Build
maven
이 설치되어 있지 않다면:brew install maven
mvn clean package -DskipTests
- 이 과정이 시간이 좀 걸림. 필자는 2시간 30분
- Run
./bin/zeppelin-daemon.sh start
- 종료는
./bin/zeppelin-daemon.sh stop
- 예제 코드 실행
localhost:8080
으로 접속- 노트북 생성:
Create new note
클릭하여spark
로 생성 - 코드 실행
- Zeppelin 설치 과정에서
Scala
,Spark
등의 인터프리터를 모두 설치하는데, 이것을 사용하는 것인지 or 위에서SCALA_HOME
,SPARK_HOME
으로 설정한 것을 사용하는 것인지 확실하지 않다.
4. Spark에서 S3 데이터 불러오기
- Zeppelin pyspark에서 바로 AWS S3 데이터를 불러올 수 없음
%pyspark raw = sqlContext.read.format('parquet').load('s3://디렉토리 주소')
- 결과:
java.io.IOException: No FileSystem for scheme: s3
- 결과:
- 추가적인 configure 필요
- https://medium.com/@mrpowers/working-with-s3-and-spark-locally-1374bb0a354
- https://eyeballs.tistory.com/156
- 필요시 추가적인 문서 더 찾아 완료하기
- AWS Access key 및
Hadoop
설치 필요한 듯
- 참고 문서
- Homebrew로 Zeppelin까지 설치하기
- 참고로 현재 Zeppelin은
Homebrew
에서 설치 불가
- 참고로 현재 Zeppelin은
- Homebrew로 pyspark 설치 및 샘플 코드
- How to Build Zeppelin from Source: Zeppelin 공식 문서
- 성윤님 블로그 글: Apache Zeppelin(아파치 제플린)
- Homebrew로 Zeppelin까지 설치하기