14.7 분석 워크플로우
앞 장의 요소를 묶어, Pod에서 시작해 Slurm·Spark를 거쳐 결과를 회수하는 전형적인 흐름을 보여줍니다. 공유 스토리지 덕분에 단계 사이에 파일 복사가 전혀 없다는 점에 주목하세요.
14.7.1 시나리오
코호트 VCF 데이터를 ① Pod에서 준비·점검하고, ② Slurm으로 전처리(예: 포맷 변환·요약)한 뒤, ③ Spark/Hail로 대규모 QC·필터링을 수행하고, ④ Pod에서 결과를 확인한다.
14.7.2 단계별 실행
① Pod: 준비
bash
# Pod 접속 후
source ${WORK_DIR}/env.sh
conda activate ${CONDA_ENV_DIR}/analysis
mkdir -p ${WORK_DIR}/scripts ${WORK_DIR}/logs ${WORK_DIR}/results
ls -lh ${DATA_DIR}/cohort.vcf.bgz # 입력 데이터 존재 확인② Slurm: 전처리 배치
${WORK_DIR}/scripts/preprocess.sh를 작성(14.5.3장 참조)하고 Slurm 로그인 노드에서 제출합니다.
bash
ssh -p ${SLURM_SSH_PORT} ${LDAP_USER}@${SLURM_LOGIN_HOST}
sbatch ${WORK_DIR}/scripts/preprocess.sh
squeue -u ${LDAP_USER} # 완료까지 모니터링전처리 결과는 ${WORK_DIR}/results(공유 스토리지)에 저장됩니다.
③ Spark/Hail: 대규모 분석
전처리 산출물을 입력으로 Hail 작업을 제출합니다(14.6.4장 참조).
bash
spark-submit \
--master spark://${SPARK_MASTER_HOST}:${SPARK_MASTER_PORT} \
--executor-memory 8G --executor-cores 4 --total-executor-cores 16 \
${WORK_DIR}/scripts/hail_job.py진행 상황은 Spark UI(http://${SPARK_MASTER_HOST}:${SPARK_UI_PORT})에서 확인합니다.
④ Pod: 결과 확인
bash
# Pod로 돌아와 같은 경로에서 결과 확인 (복사 불필요)
ls -lh ${WORK_DIR}/results/cohort_filtered.mt7.7.3 Slurm과 Spark, 무엇을 언제 쓰나
| 상황 | 권장 | 이유 |
|---|---|---|
| Hail로 하는 대규모 유전체 분석 | Spark | 본 환경의 Spark는 Hail 전용 분산 처리에 최적화 |
| 일반 스크립트(파이썬/셸), 단일·소수 노드 계산 | Slurm | 배치 스케줄링·자원 격리에 적합 |
| 포맷 변환, 전·후처리, 보조 작업 | Slurm | Hail이 필요 없는 작업은 Spark를 점유할 필요가 없음 |
| 빠른 탐색·디버깅 | Pod(소규모) 또는 대화형 | 클러스터 자원을 길게 점유하지 않음 |
판단 기준 한 줄 요약
“Hail이면 Spark, 그 외 계산이면 Slurm.” Spark는 Hail 전용 자원이므로 Hail이 아닌 작업으로 점유하지 않습니다.