본문 바로가기

빅데이터 플랫폼 & 아키텍처

5편. Hadoop 운영 자동화 – 스크립트·Job Template·배포 체계 표준화

반응형

 

5편. Hadoop 운영 자동화 – 스크립트·Job Template·배포 체계 표준화

Hadoop 운영을 오래 해보면 가장 크게 느끼는 문제는 작업(Job) 관리의 비표준화와 운영 자동화 부족이다.
특히 금융권·공공기관 환경은 다음과 같은 문제를 자주 겪는다.

  • Spark/Hive Job 수백개 이상 → 관리 난이도 급증
  • 배치 실패 시 원인 추적 어려움
  • 개발자마다 Job 작성 방식 제각각
  • 프로덕션 반영 절차 복잡
  • HDFS 디렉터리·정책·권한 세팅 매번 수동 처리
  • 장애 대응 스크립트 부재

이 편에서는 실무 현장에서 실제로 사용해 효과를 봤던
“Hadoop 운영 자동화 전략 + 스크립트 모음 + Job Template 표준화”를 정리했다.


🧩 1. Hadoop 운영 자동화의 핵심 원칙

금융권에서 자동화를 적용할 때 가장 중요한 3가지 원칙은 다음과 같다.

① 반복 작업은 반드시 스크립트화

폴더 생성 → 권한 설정 → Hive 테이블 생성 → Spark Job 등록 등
사람이 할 필요 없는 루틴한 작업은 모두 자동화한다.

② 운영 표준화(Template 기반)

개발자마다 제각각 Spark/Hive 코드를 작성하면 운영 난이도가 폭증한다.
공통 템플릿 + 공통 실행 스크립트가 반드시 필요하다.

③ 배포 체계 자동화

Git → Jenkins → Hadoop Cluster 자동 배포 파이프라인 구성.
(망분리 환경에서는 내부 Git + 내부 Jenkins 사용)


🛠️ 2. Spark/Hive Job 표준 운영 구조 설계

아래는 실제 금융권에서 운영되는 공통 구조의 예다.

/etl
  /jobs
     ├─ spark/
     │    ├─ job1/
     │    │     ├─ job.conf
     │    │     ├─ job.py
     │    │     └─ README.md
     │    └─ job2/
     ├─ hive/
     │    ├─ table1.hql
     │    └─ table2.hql
     ├─ common/
     │    ├─ spark_submit.sh
     │    ├─ hive_exec.sh
     │    └─ validate_input.sh
  /config
     ├─ prod/
     └─ dev/

핵심 포인트

  • 실행 스크립트는 공통 디렉터리에서 관리
  • 각 job은 job.conf에 설정
  • job.py / job.hql은 최소한의 로직만 작성
  • README.md에는 Input/Output/HDFS 경로/리소스 정보를 명시

⚙️ 3. 운영 자동화 스크립트 모음 (실전 예제)

아래는 실제로 금융기관에서 사용 가능한 수준의 자동화 샘플 스크립트다.


✔ (1) Spark Job 공통 실행 스크립트 (spark_submit.sh)

#!/bin/bash
JOB_CONF=$1
source $JOB_CONF

spark-submit \
  --master yarn \
  --deploy-mode cluster \
  --driver-memory $DRIVER_MEMORY \
  --executor-memory $EXECUTOR_MEMORY \
  --executor-cores $EXECUTOR_CORES \
  --num-executors $NUM_EXECUTORS \
  $JOB_FILE \
  --date $RUN_DATE

특징

  • 리소스 설정을 코드가 아닌 .conf 파일에서 관리
  • 운영자는 리소스 조절만 하면 즉시 반영 가능
  • Spark Job 등록 자동화 가능

✔ (2) Hive Table 생성 자동화 (create_hive_table.sh)

#!/bin/bash
HQL_FILE=$1
hive -f $HQL_FILE 1>/var/log/hive_create.log 2>&1

활용 사례

  • 신규 테이블 수십 개를 한번에 생성
  • 테이블 스키마 변경도 자동화 가능

✔ (3) HDFS 디렉터리 자동 생성 (init_hdfs.sh)

#!/bin/bash
BASE="/data/project/$1"

hdfs dfs -mkdir -p $BASE/raw
hdfs dfs -mkdir -p $BASE/stage
hdfs dfs -mkdir -p $BASE/model

hdfs dfs -chown -R $2:$2 $BASE
hdfs dfs -chmod -R 750 $BASE

자동화로 해결되는 점

  • 폴더 생성 오류 감소
  • 권한 누락 방지
  • 신규 프로젝트 생성 속도 대폭 상승

📦 4. Jenkins 기반 Hadoop 배포 파이프라인

금융권의 망분리 환경에서도 아래 구조는 그대로 적용 가능하다.

Git → Jenkins → Spark/Hive Job 배포 → HDFS 배포 → Validation → 알림

단계별 구성

  1. Git Commit
    • Job 코드, Hive 스크립트, config 파일 업로드
  2. Jenkins Pipeline
    • 정적 분석(옵션)
    • Spark/Hive 스크립트 Syntax 체크
    • HDFS 경로 자동 생성
    • 운영/개발 환경별 자동 배포
  3. Validation Script
    • HDFS 파일 존재 확인
    • Hive 테이블 스키마 체크
    • Spark Job Dry-run 테스트
  4. Slack/Teams 알림
    • 성공/실패 자동 보고

🔍 5. 운영 자동화 체크리스트

항목 자동화 여부

HDFS 폴더 생성 자동화
권한 설정 자동화
Hive 테이블 생성 자동화
Spark Job 등록 자동화
Job 리소스 설정 conf 기반
모니터링 알림 자동화
장애 대응 스크립트 필요
배포 파이프라인 구축 필요

🧨 6. 장애 대응 자동화 스크립트 예시

✔ Spark Job Failure 자동 재시도

#!/bin/bash
RETRY=3

for ((i=1;i<=RETRY;i++)); do
  ./spark_submit.sh job.conf
  if [ $? -eq 0 ]; then
     echo "Success"
     exit 0
  fi
  echo "Retry $i ..."
  sleep 10
done

exit 1

장점

  • 배치 실패율 감소
  • 운영 인력의 새벽 호출 감소
  • 일시적 Yarn Timeout 문제 자동 해결 가능

🔧 7. 운영 Dashboard 구성 요소

운영 자동화의 완성은 Dashboard다.

필수 모니터링 항목

  • Job Success/Fail 현황
  • Job별 평균 실행 시간
  • Yarn Queue 사용량
  • HDFS 용량
  • 오류 위험도 점수 (Hive 에러, 메모리 에러 등)
  • SLA 미준수 Job 목록

Grafana/Elasticsearch 기반으로 구성하면 빠르게 구축 가능하다.


💡 실전 Tip 3개

Tip 1. “직접 실행 금지" 전략을 도입하라.

Spark/Hive Job을 개발자가 직접 spark-submit하지 못하도록 하라.
운영 스크립트/파이프라인을 통해서만 실행해야 표준화가 가능하다.

Tip 2. Config 중심 구조를 만들면 Job 100개도 관리가 쉽다.

리소스 설정을 코드에서 분리하면 운영 난이도가 절반 이하로 줄어든다.

Tip 3. 장애 대응 스크립트는 “자동 재시도 + 실패 Slack 알림”이 핵심이다.

실제 운영팀이 새벽에 덜 깨는 가장 실효성 있는 구조다.


📌 다음 편 예고

6편. Hadoop + Kafka 기반 실시간 분석 아키텍처 – End-to-End 구현 가이드


🔖 추천 태그

기술 태그

  • Hadoop
  • Spark
  • Hive
  • YARN
  • HDFS
  • BigDataPlatform
  • DataEngineering
  • ETLAutomation
  • DataPipeline
  •  
반응형