Server | Master | Slave01 | Slave02 | Slave03 |
---|---|---|---|---|
OS | Centos7 | Centos7 | Centos7 | Centos7 |
Disk Size | 1000G | 1000G | 1000G | 1000G |
Memory | 32G | 16G | 16G | 16G |
Processors | 12 | 12 | 12 | 12 |
실행서버 : Master
내부 모듈은 zip 파일로 만들어서 사용할 것이다
**폴더 구조**
Credit /
|-- 스크립트 실행 Main.py
|-- packages/ (내부 패키지)
| |-- __init__.py
| |-- module1.py
| |-- module2.py
| |-- ...
|-- venv/ (외부 패키지)
| |-- pip installed modules
zip -r packages.zip packages
실행서버 : Master
외부 패키지는 Virtualenv로 만들어서 사용할 것이다
python -m venv /설치할 경로/venv
source /설치할 경로/venv/bin/activate
pip install pyarrow pandas venv-pack(이건 무조건 설치)
venv-pack -o venv.tar.gz
spark-submit \
--master yarn \
--deploy-mode cluster \
--packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0 \
--py-files packages.zip \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./venv/bin/python \
--conf spark.executorEnv.PYSPARK_PYTHON=./venv/bin/python \
--archives venv.tar.gz#venv Credit/Main.py
-master yarn
: Spark 애플리케이션의 마스터 URL을 설정, 이 옵션은 YARN 클러스터 관리자를 사용하여 작업을 실행하도록 지정합니다.-deploy-mode cluster
: 애플리케이션의 배포 모드를 설정, cluster
모드는 드라이버 프로그램이 클러스터의 워커 노드 중 하나에서 실행되도록 합니다.-packages org.apache.spark:spark-sql-kafka-0-10_2.11:2.4.0
: 애플리케이션에 필요한 외부 라이브러리를 추가, 이 경우, Spark SQL Kafka 커넥터 라이브러리가 추가됩니다.-py-files packages.zip
: Python 파일 또는 모듈의 ZIP 아카이브를 추가, 이 옵션을 사용하면 파이썬 코드와 함께 필요한 라이브러리를 클러스터에 배포할 수 있습니다. (여기서는 내부 모듈만 배포)-conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./venv/bin/python
: YARN 애플리케이션 마스터의 환경 변수를 설정, 이 경우, PYSPARK_PYTHON 환경 변수를 애플리케이션 마스터가 사용할 파이썬 인터프리터로 설정합니다.(아래 심볼릭 링크 지정으로 경로를 현재경로인 ./
로 시작)-conf spark.executorEnv.PYSPARK_PYTHON=./venv/bin/python
: Spark 실행자의 환경 변수를 설정, 이 경우, 실행자가 사용할 파이썬 인터프리터를 설정합니다.(아래 심볼릭 링크 지정으로 경로를 현재경로인 ./
로 시작)-archives venv.tar.gz#venv
: 애플리케이션에 필요한 압축된 아카이브를 추가하고, 심볼릭 링크를 생성, 이 경우, Python 가상 환경이 포함된 venv.tar.gz
파일이 추가되고, venv
라는 심볼릭 링크가 생성됩니다. 이렇게 하면 애플리케이션에 필요한 라이브러리와 함께 가상 환경을 클러스터에 배포할 수 있으며, 심볼릭 링크를 통해 쉽게 참조할 수 있습니다.시행 착오
pip install -t target folder
하여 target folder
을 ZIP파일로 만들어 spark-submit을 생성했을때 계속 Job이 실패하는 상황이 벌어졌다.No moduled name pandas
나 No moduled name numpy
가 보였다.원인 분석 및 해결방안
-archives
옵션을 사용하여 압축된 가상 환경을 클러스터에 배포할 수 있다.-conf spark.yarn.appMasterEnv.PYSPARK_PYTHON
과 -conf spark.executorEnv.PYSPARK_PYTHON
옵션을 사용한다.