본문 바로가기

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

3편. Hadoop 운영 자동화 스크립트 모음 – 금융권 표준 실전 스크립트 공개

반응형

 

3편. Hadoop 운영 자동화 스크립트 모음 – 금융권 표준 실전 스크립트 공개

금융권 Hadoop 운영은 단순히 클러스터를 “유지”하는 수준이 아니라,
24/7 장애 감지·로그 분석·성능 튜닝·데이터 품질 유지까지 모두 포함된다.
운영 인력은 적지만 규제는 강하고 SLA는 엄격하기 때문에,
자동화 스크립트는 선택이 아니라 생존에 가깝다.

이번 글에서는
👉 Spark / Hive / HDFS / YARN / 모니터링 자동화 스크립트
을 모두 공개한다.

실제 금융기관 운영 현장에서 사용 중인 형태를 기반으로 하며,
“손으로 직접 관리해야 했던 반복 작업”을 완전히 자동화할 수 있다.


📌 목차

  1. Spark Job 자동화 스크립트
  2. Hive 테이블 관리 자동화
  3. HDFS 점검·복구 스크립트
  4. YARN 자원 모니터링 + 자동 정리
  5. DataNode 디스크 자동 밸런싱
  6. Hadoop 장애 탐지 스크립트(Email/Slack 연동)
  7. 실전 팁 3개

🟦 1. Spark Job 자동화 스크립트

🔹 1.1 spark-submit 자동화 템플릿

금융권에서 매일 쓰는 Spark Job 실행 스크립트다.

#!/bin/bash

APP_NAME="daily_report_job"
JAR_PATH="/opt/apps/report-job.jar"
MAIN_CLASS="com.company.report.Main"
CONF_FILE="/opt/conf/spark-default.conf"

DATE=$(date +%Y-%m-%d)
LOG="/var/log/spark/${APP_NAME}_${DATE}.log"

spark-submit \
 --class $MAIN_CLASS \
 --master yarn \
 --deploy-mode cluster \
 --executor-memory 8g \
 --executor-cores 2 \
 --num-executors 10 \
 --conf spark.yarn.queue=etl \
 --conf spark.sql.shuffle.partitions=300 \
 $JAR_PATH >> $LOG 2>&1

자동 실행 시나리오:

  • Airflow/Control-M 연동
  • 실패 시 자동 재시도
  • 로그 자동 압축 및 일자별 보관

🔹 1.2 Spark Job 성능 자동 진단 스크립트

Spark 작업이 느려지는 가장 큰 이유는 Shuffle Spill이다.
아래 스크립트로 감지 가능하다.

#!/bin/bash

APP_ID=$1
yarn logs -applicationId $APP_ID | grep -i "spill" -C3

출력에 spill 메시지가 많으면:

  • 파티션 수를 늘리거나
  • Executor memory 증가
  • Broadcast join 적용

필수 조치 필요.


🔹 1.3 느린 Stage 자동 탐지 스크립트

curl -s http://<spark-history-server>/api/v1/applications/$APP_ID/stages \
 | jq '.[] | select(.duration > 600000)'

600초 이상 걸린 Stage만 추출.


🟩 2. Hive 테이블 자동 관리 스크립트

금융권에서 가장 많이 발생하는 Hive 문제는
메타데이터 불일치, 파티션 누락, 오래된 데이터 쌓임이다.

아래 스크립트들은 이러한 문제를 자동화로 해결한다.


🔹 2.1 파티션 자동 추가 스크립트

#!/bin/bash

DB=$1
TABLE=$2
DATE=$(date +%Y-%m-%d)

hive -e "
ALTER TABLE ${DB}.${TABLE}
ADD IF NOT EXISTS PARTITION(dt='${DATE}');
"

Airflow로 매일 수행하면 파티션 누락으로 인한 장애 80% 감소.


🔹 2.2 Hive ORC/Parquet 스토리지 최적화 스크립트

hive -e "
ALTER TABLE ${DB}.${TABLE}
SET FILEFORMAT ORC;
"

금융권에서는 CSV → ORC 전환만으로 조회 성능 3~10배 향상.


🔹 2.3 Hive Metastore 헬스체크

#!/bin/bash
beeline -u "jdbc:hive2://hiveserver01:10000/default" -e "show databases;" >/dev/null 2>&1

if [ $? -ne 0 ]; then
  echo "[ERROR] Hive Metastore Connection Failed"
  exit 1
fi

🟥 3. HDFS 점검·복구 스크립트

금융권 HDFS 운영의 핵심 키워드:

  • 디스크 불균형
  • 데이터 손상
  • 네임노드 힙 부족
  • 블록 손상
  • 디스크 full

아래 스크립트들이 이런 문제를 빠르게 조치해준다.


🔹 3.1 블록 손상 자동 감지

#!/bin/bash
hdfs fsck / -list-corruptfileblocks >> /var/log/hdfs_corrupt.log

corrupt 블록이 발견되면:

  • 자동 복제
  • admin에게 Slack/Email 알람 전송

🔹 3.2 HDFS 사용량 리포트 생성

hdfs dfsadmin -report > /var/log/hdfs_report_$(date +%F).txt

상시 모니터링용.


🔹 3.3 가장 무거운 디렉토리 자동 분석

hdfs dfs -du -h / | sort -hr | head -20

데이터 정리 후보 Top 20 자동 출력.



🟧 4. YARN 자원 모니터링 + 자동 정리 스크립트

🔹 4.1 Queue 사용률 모니터링

curl -s http://rm01:8088/ws/v1/cluster/scheduler \
 | jq '.scheduler.schedulerInfo.queues.queue[] | {queueName, usedCapacity, capacity}'

🔹 4.2 멈춘 Spark Container 자동 정리

yarn application -list | grep -i FINISHED | awk '{print $1}' | xargs yarn application -kill

🔹 4.3 NodeManager Heartbeat 체크

curl -s http://rm01:8088/ws/v1/cluster/nodes \
 | jq '.nodes.node[] | select(.state!="RUNNING")'

RUNNING 아닌 노드 자동 알림.



🟨 5. DataNode 디스크 자동 Balancing 스크립트

금융권에서 Spark 속도 저하의 진짜 원인 대부분은
DataNode 데이터 불균형이다.

아래 스크립트로 주기적 자동 밸런싱 가능.

#!/bin/bash
hdfs balancer -threshold 7 >> /var/log/hdfs_balance.log

crontab 등록:

0 3 * * * /opt/scripts/hdfs_balance.sh

🟪 6. Hadoop 장애 탐지 + Email/Slack 자동 알림 스크립트

🔹 6.1 Yarn/HDFS 에러 검색 후 알림

#!/bin/bash

LOG="/var/log/hadoop/hadoop.log"
ERR=$(grep -i "error\|exception" $LOG | tail -20)

if [[ ! -z "$ERR" ]]; then
    echo "$ERR" | mail -s "[Hadoop Alert] Error Detected" admin@company.com
fi

🔹 6.2 Slack 연동 스크립트

#!/bin/bash

WEBHOOK_URL="https://hooks.slack.com/services/XXXX"

MSG="Hadoop Alert 발생: $(date)"
curl -X POST -H 'Content-type: application/json' \
 --data "{\"text\":\"$MSG\"}" \
 $WEBHOOK_URL

🌟 7. 금융권 실전 팁 3개

팁 1) HDFS 불균형은 Spark 속도 문제 60% 이상을 차지한다.

Balancer를 꼭 자동화해야 한다.


팁 2) Hive Metastore는 금융권 장애 TOP 3다.

연결 수 체크 스크립트는 필수.


팁 3) Spark Job은 로그 분석 자동화 없이는 유지가 어렵다.

특히 spill, OOM, shuffle 병목을 자동 감지해야 SLA 준수 가능.


🎯 마무리

이번 3편에서는 금융권에서 실제로 사용하는 수준의
Hadoop 운영 자동화 스크립트 전체 모음을 공개했다.

다음 편(4편)은 금융권 운영 경험 기준으로 작성하는:

 

👉 4편. 금융권 Hadoop 클러스터 장애 대응 시나리오 + 로그 분석 가이드

반응형