반응형
🎯 목표
- Apache Spark 실습 환경을 M1 MacBook에서 구성
- PySpark + Jupyter Notebook 조합으로 실습 가능하게 만들기
- Docker 대신 Colima 기반으로 경량화된 환경 사용
내용
전체 요약
M1 Mac에서 Spark 환경을 Docker로 구성하려다 Docker Desktop의 보안 이슈로 실패했고, 대안으로 Colima를 사용하여 성공적으로 PySpark + Jupyter 환경을 구축했다. 환경 구성 이후 Jupyter에서 SparkSession을 실행하여 Spark 기본 작동 확인까지 완료함.
최소 실행 절차 요약 (터미널 기준)
# Colima 및 Docker CLI 설치
brew install colima
brew install docker
# Colima 실행
colima start
# Credential 설정 오류 방지 (필요 시)
nano ~/.docker/config.json
# "credsStore": "desktop" 항목 제거
# Jupyter + PySpark 컨테이너 실행
docker run -it --rm -p 8888:8888 jupyter/pyspark-notebook
주피터 노트북에서 실행할 기본 코드
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
spark.range(5).show()
이 코드를 실행해 id 컬럼이 0~4까지 출력되면 환경 구성은 정상적으로 완료된 것이다.
M1 Mac에서 Spark 환경을 Docker로 구성하려다 Docker Desktop의 보안 이슈로 실패했고, 대안으로 Colima를 사용하여 성공적으로 PySpark + Jupyter 환경을 구축했다. 환경 구성 이후 Jupyter에서 SparkSession을 실행하여 Spark 기본 작동 확인까지 완료함.
상세
환경 구성 과정은 단순히 설치만으로 끝나지 않았다. 특히 M1 Mac에서는 Docker Desktop 설치 후, macOS의 보안 시스템(Gatekeeper 및 XProtect)에 의해 com.docker.vmnetd가 악성코드로 잘못 인식되면서 실행이 차단되는 문제가 발생했다. 해당 이슈로 인해 약 10초 간격으로 팝업이 계속 발생하고, 시스템 환경설정에서도 예외 처리가 되지 않아 실제 사용이 매우 어려운 상황이 반복되었다.
1. Docker Desktop 설치 실패 및 Colima로 전환
- Docker Desktop을 사용할 수 없게 되면서 대안이 필요했고, 커뮤니티에서 추천되는 Colima를 도입해보기로 했다.
- Colima는 QEMU와 Lima 기반의 경량 리눅스 가상 머신 위에서 Docker 데몬을 실행하며, M1/M2 칩 환경에 최적화되어 있다.
- Docker CLI와의 호환성이 좋고, GUI 없이도 필요한 기능을 대부분 사용할 수 있다.
2. Colima 설치 및 Docker CLI 구성
brew install colima
brew install docker
colima start
실행 결과:
INFO[0000] starting colima
INFO[0000] runtime: docker
INFO[0001] creating and starting ... context=vm
INFO[0032] done
- docker version 명령으로 클라이언트와 서버가 연결된 상태임을 확인:
docker version
결과 예시:
Client: Docker Engine - Community
Version: 28.1.1
Context: colima
Server: Docker Engine - Community
Version: 27.4.0
OS/Arch: linux/arm64
3. Docker Credential 설정 오류 해결
- docker run 명령을 실행했을 때 아래와 같은 오류가 발생:
docker: error getting credentials - err: exec: "docker-credential-desktop": executable file not found in $PATH
- 이는 Docker Desktop이 제거되었지만 설정 파일 내 credsStore 항목이 남아있기 때문이었다.
해결 방법:
nano ~/.docker/config.json
수정 전:
{
"auths": {},
"credsStore": "desktop",
"currentContext": "colima"
}
수정 후:
{
"auths": {},
"currentContext": "colima"
}
Colima 재시작:
colima stop && colima start
4. PySpark + Jupyter 실행
docker run -it --rm -p 8888:8888 jupyter/pyspark-notebook
실행 결과:
Unable to find image 'jupyter/pyspark-notebook:latest' locally
latest: Pulling from jupyter/pyspark-notebook
...
[I ... ServerApp] Jupyter Server 2.8.0 is running at:
http://127.0.0.1:8888/lab?token=...
- 출력된 주소를 브라우저에 붙여넣으면 Jupyter Lab 환경에 접속할 수 있다.
5. SparkSession 실습
Jupyter에서 새로운 Python 3 노트북을 열고 다음 코드 실행:
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
spark.range(5).show()
결과:
+---+
| id|
+---+
| 0|
| 1|
| 2|
| 3|
| 4|
+---+
6. 컨테이너 및 Colima 종료 방법
- Jupyter 컨테이너 종료는 Ctrl + C 두 번 입력
- --rm 옵션 덕분에 컨테이너는 종료와 함께 자동 삭제됨
- Colima 가상 머신도 다음 명령어로 종료:
colima stop
다음 계획
- PySpark에서 CSV, Parquet 파일 읽고 쓰기
- Transformation, Action 실습 (filter, groupBy, agg 등)
- UDF, Window Function 활용 예제까지 확장 예정
반응형
'Python > Spark' 카테고리의 다른 글
Spark 독학하기 3일차 – 분산 처리가 뭐야.. (0) | 2025.05.11 |
---|---|
Spark 독학하기 2일차 – Spark의 기본 개념 구조 (0) | 2025.05.10 |
Spark 독학하기 0일차 – Spark를 공부해야겠구만.. (2) | 2025.05.10 |
댓글