카테고리 없음

데이터 엔지니어링과 Hadoop 에코시스템

bbomi 2024. 10. 5. 18:56
  • 데이터 엔지니어는 데이터의 수집부터 저장, 처리, 분석에 이르는 전 과정을 설계하고 운영하는 역할을 수행
  • 특히, 대규모 데이터를 다루기 위해선 Hadoop을 비롯한 분산 처리 기술과 Python, SQL, 그리고 각종 협업 도구들에 대한 이해가 필수적
  • 해당 포스팅에선 Hadoop 에코시스템을 중심으로, 데이터 엔지니어링에 필요한 지식과 실무 적용 방안을 소개 예정입니다.

1. Hadoop 에코시스템 개요

  • HDFS(Hadoop Distributed File System)
    • 대용량 데이터를 여러 노드에 분산 저장하기 위한 파일 시스템
    • 장애 발생 시 복제본(replica)을 통해 안전하게 데이터를 보존하고, 병렬 처리를 통해 빠른 속도를 보장
  • YARN(Yet Another Resource Negotiator)
    • 클러스터 자원을 관리하고, 작업(애플리케이션)을 스케줄링하는 핵심 컴포넌트
    • 여러 애플리케이션(MapReduce, Spark, Tez 등) 간에 자원을 효율적으로 배분
  • MapReduce
    • Hadoop의 기본 분산 처리 프레임워크
    • Map 단계에서 데이터를 분할하고, Reduce 단계에서 결과를 집약 (aggregation)
  • Hive / Tez / Spark
    • Hive: SQL과 유사한 HiveQL로 HDFS 데이터를 관리
    • Tez: MapReduce의 단점을 보완한 빠르고 유연한 DAG(방향성 비순환 그래프) 기반 엔진
    • Spark: 인메모리(In-Memory) 컴퓨팅을 통해 고속의 데이터 처리가 가능

2. 데이터 엔지니어링 주요 업무

  • 데이터 파이프라인 설계 및 구축
    • 수집(Ingestion): 크롤링, API, 로그 수집기(Flume, Kafka 등)를 통해 다양한 형태의 데이터를 HDFS나 NoSQL DB(HBase 등)에 적재
    • 저장(Storage): HDFS, MySQL, S3 등 적절한 스토리지에 저장하는 과정에서 스키마를 정의하거나 파티셔닝, 파티션 키 등을 설계
    • 처리 및 변환(Processing & Transformation): MapReduce, Spark, Hive, Python 등을 활용해 정제, 가공, 집계 작업 수행
    • 분석(Analysis): HiveQL 혹은 Spark SQL로 데이터 통계, 리포트 생성, 모델 학습용 Feature Engineering 등 진행
  • 데이터 품질 관리
    • 정확도(Accuracy), 일관성(Consistency), 유효성(Validity) 등을 평가하고 보장
    • 로그 스케줄링 또는 파이프라인 모니터링(에어플로우, Oozie 등)을 통해 문제 발생 시 빠른 대응
  • 데이터 보안 및 거버넌스
    • 기업 및 산업 표준(예: GDPR, 내부 보안 정책)에 따라 접근 권한, 암호화, 마스킹 등을 적용
    • 메타데이터 관리(Metastore, Data Catalog)와 계보(Lineage) 추적을 통해 데이터 이력 관리
  • 배포 및 운영(DevOps for Data)
    • GitHub Enterprise를 통한 버전 관리, CI/CD 환경에서 자동화 스크립트(Python, Shell 등)를 활용해 배포
    • Jira, Confluence 등 협업 도구로 이슈를 추적하고 문서화를 체계적으로 수행

3. 데이터 엔지니어링 구현 예시

Hadoop 에코시스템을 활용해 AI 모델 학습용 데이터 생성 예시

  1. 데이터 수집
    • Flume 또는 Kafka를 통해 웹 서비스 로그(비정형 텍스트)를 실시간으로 HDFS에 적재
    • API나 파트너사에서 제공하는 CSV, JSON 등의 데이터를 정기적으로 HDFS에 업로드
  2. 데이터 정제 및 변환
    • Hive 쿼리나 Spark SQL로 이상치 제거, 결측값 처리, 스키마 변환(정형화)
    • Python 스크립트로 특정 규칙 기반 필터링, 중복 제거, 샘플링
  3. 모델 학습 세트 생성
    • 정제된 데이터를 바탕으로, HyperClovaX 학습에 필요한 토큰화, 라벨링 작업 등을 병렬 처리
    • JupyterLab에서 결과를 검증하고, 원하는 스키마/컬럼만 CSV, Parquet 등으로 Export
  4. 평가 및 모니터링
    • 모델 인퍼런스 결과를 HDFS에 기록 → Spark 또는 Hive로 주요 지표(Precision, Recall 등) 계산
    • 지표 변화를 Confluence에 정리, 향후 개선 방안을 Jira 티켓으로 생성