spark에서 conda 가상환경 설정하기 & Jupyter에서 conda 가상환경 설정하기
글 작성자: _rian
왜 클러스터에 conda 가상환경을 설정해야할까?
- 클러스터는 수많은 컴퓨터들이 하나의 클러스터로 묶여있어 분산 처리를 하고있다.
- 만약 새로운 패키지 설치 혹은 기존 패키지 업데이트가 필요한 경우 각각의 컴퓨터에 설치하거나 업데이트를 해줘야하기 때문에 번거로운 작업이면서 기존 버전과 충돌이 발생할 가능성이 존재함
- 따라서, 클러스터에 프로젝트에 필요한 하나의 독립된 환경을 만들 필요가 있음. conda를 통해 특정 버전의 패키지와 의존성을 포함하는 독립적인 환경을 만들 수 있게 해줌.
conda 환경 설정 방법 (spark client 모드에서)
1. conda 환경 생성 및 패키지 설치
- 서비스가 필요한 서버에 conda 가상환경을 생성해준다.
conda create -n my_env python=3.7
2. 가상환경 활성화
conda activate my_env
3. 필요한 각종 라이브러리 설치 및 ipykernel 패키지 설치
- 개발에 필요한 각종 라이브러리 설치하기
conda install prophet
- conda 가상환경을 jupyter에서도 설정하기 위해 ipykernel 패키지 함께 설치하기
conda install ipykernel
- conda 가상환경을 압축하는 conda-pack 라이브러리 설치하기
conda install conda-pack
4. 패키지 설치 후 conda 가상환경 압축하기
conda pack
도구를 사용하여 가상환경을 압축한다.
conda pack -n my_env -o my_env.tar.gz
5. 압욱된 가상환경 파일을 분산 파일 시스템(hdfs)에 업로드
모든 클러스터들이 접근할 수 있는 hdfs에 가상환경 파일을 업로드해준다.
hadoop fs -put my_env.tar.gz hdfs://path/to/env
6. YARN 클러스터의 모든 노드에 conda 환경 배포
spark-submit
명령을 실행할 때 --archives
옵션을 사용하셔 conda 환경을 지정
--archives
: conda 압축된 파일을 넣어줌. 스파크가 실행될 때 각 executor들에서 자동으로 압축을 해제함.PYSPARK_PYTHON
: executor가 파이썬을 실행하는 경로 설정PYSPARK_DIRVER_PATH
: driver가 파이썬을 실행하는 경로 설정
예시
spark-submit \
--master yarn \
--deploy-mode client \
--archives hdfs://11stnds/user/dpst/env/prophet_test.tar.gz#prophet_test \
--conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./prophet_test/bin/python \
--conf spark.executorEnv.PYSPARK_PYTHON=./prophet_test/bin/python \
your_spark_job.py
7. Jupyter Kernel 설정하기
conda 가상환경이 설치된 주피터 서버에서 커널을 새로 만들어준다.
- 커널들이 존재하는 경로로 이동
cd .local/share/jupyter/kernels
- 경로 새로 생성 & 이동
mkdir my_env
cd my_env
- 해당 경로로 이동 후 아래와 같이
kernel.json
생성
{
"argv": [
"/path/to/.conda/envs/prophet_test/bin/python", # conda 가상환경의 경로로 설정
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "my_env",
"language": "python",
"env": {
"HADOOP_CONF_DIR": "/path/to/hadoop",
"SPARK_HOME": "/path/to/spark",
"PYTHONPATH": "/path/to/python",
"PYSPARK_PYTHON" : "./prophet_test/bin/python", # executor에서 사용할 python 경로 설정
"PYSPARK_DRIVER_PYTHON" : "//path/to/.conda/envs/prophet_test/bin/python", # driver에서 사용할 python 경로 설정
"PYSPARK_SUBMIT_ARGS": "--master yarn --driver-memory 10g --executor-memory 20g --num-executors 15 --executor-cores 2 --archives hdfs://path/to/env/my_env.tar.gz#my_env --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./my_env/bin/python --conf spark.executorEnv.PYSPARK_PYTHON=./my_env/bin/python --conf spark.driver.maxResultSize=10g --conf spark.sql.pivotMaxValues=99999 --deploy-mode client --queue RF pyspark-shell"
}
}
'Computer Engineering' 카테고리의 다른 글
Pyspark에서 데이터 파티션 관리방법 - partitionBy() (0) | 2023.06.28 |
---|---|
YARN Cluster에 연결된 Spark로 pyspark - Oracle 데이터베이스 연결하기 (0) | 2023.06.08 |
Spark Deploy Mode의 종류 (0) | 2023.06.07 |
Pandas Basic (0) | 2020.07.01 |
[Azure Certi] AZ-900 Certi 준비 (10) - Azure 비용 예상 및 지출 최적화 (0) | 2020.05.27 |
댓글
이 글 공유하기
다른 글
-
Pyspark에서 데이터 파티션 관리방법 - partitionBy()
Pyspark에서 데이터 파티션 관리방법 - partitionBy()
2023.06.28 -
YARN Cluster에 연결된 Spark로 pyspark - Oracle 데이터베이스 연결하기
YARN Cluster에 연결된 Spark로 pyspark - Oracle 데이터베이스 연결하기
2023.06.08 -
Spark Deploy Mode의 종류
Spark Deploy Mode의 종류
2023.06.07 -
Pandas Basic
Pandas Basic
2020.07.01