본문으로 건너뛰기

[빅데이터를 지탱하는 기술] 빅데이터 입문기 #4

3-1 대규모 분산 처리의 프레임워크

구조화 데이터 vs 비 구조화 데이터

구조화 데이터

  • SQL로 데이터 집계할 때 명확히 정해진 스키마가 있음

비구조화 데이터

  • 이미지, 동영상 등 정해진 게 없는 데이터
  • 스키마리스 데이터
  • 기본 서식은 있지만 스키마 정의가 안됨
  • ex) CSV, JSON, XML 등

데이터 구조화의 파이프라인

데이터 구조화 파이프라인

  • 열 지향 스토리지에서는 팩트 테이블과 디멘전 테이블로 나뉜다.
  • 팩트 테이블: 시간에 따라 증가하는 데이터
  • 디멘전 테이블: 그에 따른 부속 데이터

비구조화 데이터를 열 지향 스토리지로 변환하는 과정

  • 데이터의 가공 및 압축을 위해 많은 컴퓨터 리소스를 사용
  • 분산 처리 프레임워크 중 Hadoop과 Spark가 있다.

Hadoop

  • 분산 데이터 처리의 공통 플랫폼
  • 단일 소프트웨어가 아닌 분산 시스템을 구성하는 다수의 소프트웨어 집합체
    • 분산 파일 시스템
    • 리소스 관리자
    • 분산 데이터 처리

Hadoop 구성

  • 분산 파일 시스템: 분산 처리 시스템에 필요한 데이터를 저장
  • 리소스 관리자: CPU 코어와 메모리를 관리하고 적절히 조율
  • 컨테이너: 어떤 호스트에서 어떤 프로세스를 실행시킬 것인지 결정하는 애플리케이션 수준의 기술

분산 데이터 처리는 다음과 같은 선택지가 있음:

  • MapReduce
  • Hive

MapReduce

  • 비구조화 데이터 가공에 적합
  • 대량의 데이터를 배치 처리하기 위한 용도

MapReduce 처리 흐름

Hive

  • SQL 등의 쿼리 언어로 집계할 때 유용
  • MapReduce의 단점을 극복: 이전 단계 완료를 기다리지 않고 다음 단계를 바로 실행

Hive 처리 흐름


대화형 쿼리 엔진 – Impala & Presto

  • 쿼리 실행을 빠르게 하기 위한 쿼리 엔진

Spark – 인메모리 형의 고속 데이터 처리

  • 효율적인 데이터 처리를 위한 프로젝트
  • Hadoop과 독립된 프로젝트

특징:

  • 대량의 메모리를 활용하여 고속화
  • 디스크에 기록하지 않음
  • Java 런타임 필요
  • 데이터 처리는 스크립트 언어 사용 가능

단점:

  • 중간에 비정상적으로 종료되면 데이터가 손실됨 (다시 실행 필요)

Spark 처리 구조

쿼리 엔진

// TODO: 추가 정리 예정