Skip to content

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.mt

7.7.3 Slurm과 Spark, 무엇을 언제 쓰나

상황권장이유
Hail로 하는 대규모 유전체 분석Spark본 환경의 Spark는 Hail 전용 분산 처리에 최적화
일반 스크립트(파이썬/셸), 단일·소수 노드 계산Slurm배치 스케줄링·자원 격리에 적합
포맷 변환, 전·후처리, 보조 작업SlurmHail이 필요 없는 작업은 Spark를 점유할 필요가 없음
빠른 탐색·디버깅Pod(소규모) 또는 대화형클러스터 자원을 길게 점유하지 않음

판단 기준 한 줄 요약

“Hail이면 Spark, 그 외 계산이면 Slurm.” Spark는 Hail 전용 자원이므로 Hail이 아닌 작업으로 점유하지 않습니다.