Spark 클러스터 구축하기
GCP SSH 연결하기
-
로컬에서 SSH 키 생성
ssh-keygen -t rsa -f ~/.ssh/gcp -C username
gcp에서 유저이름을 못찾아 고생했던 적이 여러번 있어서 아예 옵션을 붙여username
을 명시적으로 설정해준다. -
GCP VM 인스턴스 > 메타데이터에 SSH 공개 키 등록
-
SSH 연결
ssh -i ~/.ssh/gcp username@<external_ip_here>
ssh키 생성시 만든 username을 사용한다.
클러스터 만들기
- 방화벽 규칙 설정
GCP Console에서 VPC 네트워크 > 방화벽 규칙으로 이동한 후, 필요한 포트를 열기 위한 규칙을 생성.
- 트래픽: 인그레스
- 대상: 클러스터의 모든 노드에 동일한 태그 할당 후 설정
- 소스 IP 범위: 클러스터 내부 통신의 경우 10.0.0.0/8
- 프로토콜 및 포트: TCP 22, 7077, 8080, 8081, 4040, 6066 등
- 내부 통신 설정
/etc/hosts
파일 설정~/.ssh/authorized_keys
파일 설정
주의
SSH 키 이름이 id_rsa
가 아니면 SSH 접속 시 문제가 발생할 수 있음.
에러:
ssh spark01
The authenticity of host 'spark01 (10.178.0.8)' can't be established.
,,,@spark01: Permission denied (publickey).
키 이름이 다른 경우, ~/.ssh/config
파일을 설정해야 함.
spark 클러스터 구축하기
스파크 클러스터를 구축하는 방법 세가지!
1. 로컬로 설정하기
각 노드에 스파크를 직접 설치하고, 스탠드얼론 모드로 클러스터를 구성하는 방식
[노드 1] [노드 2] [노드 3]
+-----------+ +-----------+ +-----------+
| Spark | | Spark | | Spark |
| Master |----->| Worker |----->| Worker |
+-----------+ +-----------+ +-----------+
- 설명:
- 노드 1: 스파크 마스터 노드로 설정한다.
- 노드 2, 3: 스파크 워커 노드로 설정하여 마스터 노드에 연결한다.
- 특징:
- 각 노드에 직접 스파크를 설치하므로 설정이 비교적 간단.
- 개발 및 테스트 환경이나 작은 규모의 클러스터에 적합하다.
2. 도커 컨테이너 환경에서 실행하되, 수동으로 설정하기
각 노드에서 Docker를 사용하여 스파크를 컨테이너로 실행하고, 네트워킹과 설정을 수동으로 구성하는 방식.
[노드 1] [노드 2] [노드 3]
+-----------+ +-----------+ +-----------+
| Docker | | Docker | | Docker |
| Container | | Container | | Container |
| Spark | | Spark | | Spark |
| Master |----->| Worker |----->| Worker |
+-----------+ +-----------+ +-----------+
- 설명:
- 노드 1: Docker를 사용하여 스파크 마스터 컨테이너를 실행한다.
- 노드 2, 3: Docker를 사용하여 스파크 워커 컨테이너를 실행하고 마스터 컨테이너에 연결한다.
- 특징:
- 컨테이너를 사용하여 일관된 실행 환경을 제공한다.
- 네트워크 설정과 컨테이너 관리를 수동으로 해야 하므로 복잡도가 증가할 수 있다.
3. 컨테이너 오케스트레이션 툴 사용하기
Docker Swarm이나 Kubernetes와 같은 오케스트레이션 도구를 사용하여 컨테이너 기반의 스파크 클러스터를 자동화하고 관리하는 방식.
[오케스트레이션 도구]
|
+---------------+---------------+
| |
[노드 1] [노드 2, 3]
+-----------+ +-----------+
| Docker | | Docker |
| Container | | Container |
| Spark | | Spark |
| Master | | Workers |
+-----------+ +-----------+
- 설명:
- 오케스트레이션 도구가 여러 노드에 걸쳐 컨테이너를 배포하고 관리한다.
- 노드 1: 스파크 마스터 컨테이너를 실행한다.
- 노드 2, 3: 스파크 워커 컨테이너를 실행하며, 오케스트레이션 도구가 자동으로 스케일링과 관리를 수행한다.
- 특징:
- 자동화된 배포, 스케일링, 로드 밸런싱, 장애 복구 등의 기능을 제공한다.
- 대규모 클러스터나 프로덕션 환경에 적합.
- 초기 설정이 복잡할 수 있지만, 관리 효율성과 확장성이 높다.
선택 가이드
- 로컬 설정:
- 추천 대상: 개발 및 테스트 환경, 작은 규모의 프로젝트.
- 고려 사항: 빠른 구축이 가능하지만 수동 관리가 필요하다.
- 도커 수동 설정:
- 추천 대상: 컨테이너 환경이 필요하지만 오케스트레이션 도구를 사용하지 않는 경우.
- 고려 사항: 컨테이너의 이점을 활용할 수 있지만, 네트워킹과 관리에 대한 추가 작업이 필요하다.
- 오케스트레이션 도구 사용:
- 추천 대상: 대규모 클러스터, 프로덕션 환경, 자동화된 관리가 필요한 경우.
- 고려 사항: 초기 설정과 학습이 필요하지만, 장기적으로 관리 효율성과 안정성이 높다.
Leave a comment