SeaForest

빅데이터를 지탱하는 기술 리뷰 (2) 본문

Data analysis

빅데이터를 지탱하는 기술 리뷰 (2)

seaforest 2024. 3. 3. 20:48

 

 

빅데이터를 지탱하는 기술 리뷰 (1)

데이터 분야에서 너무 유명하기도 하고 추천도 받아서 이 책을 읽게 되었다. 데이터 엔지니어로 일을 하고 있는건 아니지만 데이터 엔지니어쪽 공부를 하고 싶다는 생각을 항상 하고 있었기에

seaforest76.tistory.com

3. 빅데이터의 분산 처리

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

  • 구조화 데이터와 비구조화 데이터
    • 스키마 : 테이블의 컬럼 명과 데이터형, 테이블 간의 관계
    • 구조화된 데이터 : 스키마가 명확하게 정의된 데이터
      ex. 테이블
    • 비구조화 데이터 : 스키마가 없는 데이터
      ex. 텍스트 데이터, 이미지 등
  • Hadoop
    • 분산 데이터 처리의 공통 플랫폼 
    • 단일 소프트웨어가 아니라 분산 시스템을 구성하는 다수의 소프트웨어로 이루어진 집합체
    • 기본 구성 요소
      • HDFS : 분산 파일 시스템
      • YARN : 리소스 관리자
      • MapReduce : 분산 데이터 처리의 기반
  • Spark
    • 대량의 메모리를 활용한 고속의 데이터 처리 기반

 

3-2. 쿼리 엔진

 

'Hive'에 의한 구조화 데이터의 생성과 'Presto'에 의한 대화식 쿼리에 대해 설명

  • 데이터 마트 구축의 파이프라인
    • Hive 
      • 데이터 구조화
      • 분산 스토리지에 저장된 데이터를 구조화하고 열 지향 스토리지 형식으로 저장, 가공하는 부하가 큰 처리이기 때문에 Hive 이용
      • 시간이 많이 걸리는 배치 처리는 Hive 사용 해야함
    • Presto
      • 데이터 집약
      • 완성한 구조화 데이터를 결합, 집계하고 비정규화 테이블로 데이터 마트에 써서 내보냄. 열 지향 스토리지를 이용한 쿼리의 실행에는 Presto 사용
      • SQL 실행에 특화된 시스템
      • 실행이 빠르기 때문에 오류가 발생하면 다시 반복해서 사용함

 

 

3-3. 데이터 마트의 구축

분산 시스템이 준비되면 시각화를 위해 데이터 마트를 만드는 절차에 들어감.

  • 팩트 테이블
    • 추가 (append) : 새로 도착한 데이터만을 증분으로 추가
    • 치환 (replace) : 과거의 데이터를 포함하여 테이블 전체를 치환
  • 테이블 파티셔닝
    • 하나의 테이블을 여러 물리적인 파티션으로 나눔으로써 파티션 단위로 정리하여 데이터를 쓰거나 삭제할 수 있도록 함
    • 데이터 웨어하우스 구축에 유용

  • 집계 테이블
    • 팩트 테이블을 어느 정도 모아서 집계하면 데이터의 양이 크게 줄어들 수 있음
    • 일정 시간을 간격으로 집계하여 불필요한 정보를 제거한 테이블
  • '스냅샷 테이블' 과 '이력 테이블'
    • 마스터 데이터처럼 업데이트 될 가능성이 있는 테이블에 대해서는 두 가지 방안이 있음
    • 스냅샷 테이블 : 정기적으로 테이블을 통째로 저장하는 방법
    • 이력 테이블 : 변경 내용만을 저장하는 방법

 

4. 빅데이터의 추적

빅데이터를 효율적으로 집계하려면 '장기적인 데이터 분석'을 가정한 '스토리지' 마련은 필수적이다. 

 

4-1. 벌크 형과 스트리밍 형의 데이터 수집

  • 벌크 형의 데이터 전송
    • 전통적인 데이터 웨어하우스에서 사용된 것은 주로 '벌크 형' 방식
    • 과거에 축적된 대량의 데이터가 이미 있는 경우나 기존의 데이터베이스에서 데이터를 추출하고 싶을 경우에 벌크 형의 데이터 전송

 

 

  • 스트리밍 형의 데이터 전송
    • 계속해서 전송되어 오는 작은 데이터를 취급하기 위한 데이터 전송

 

 

4-2. [성능X신뢰성] 메시지 배송의 트레이드 오프

  • 메시지 브로커
    • 스토리지의 성능 문제를 해결하는 중간층의 설치
    • 대량의 메시지를 안정적으로 받기 위해서는 성능이 매우 높고 필요에 따라 성능을 얼마든지 올릴 수 있는 스토리지 필요
    • 송신자(publisher)로부터 전달받은 메시지를 수신자(subscriber)로 전달해주는 중간 역할
  • 푸시 형과 풀 형
    • 푸시형 : 송신 측의 제어로 데이터를 보내는 방식
    • 풀 형 : 수신 측의 주도로 데이터를 가져오는 것
  • 신뢰성 문제

신뢰성이 낮은 네트워크에서는 메시지의 중복이나 누락이 발생하기 때문에 대부분의 경우 아래 3가지 중 하나를 보장하도록 설계된다. 

  • at most once : 메시지는 한 번만 전송된다. 그러나 도중에 전송에 실패해서 사라질 가능성이 있다.
  • exactly once : 메시지는 손실되거나 중복 없이 한 번만 전달된다.
  • at least once : 메시지는 확실히 전달된다. 단, 같은 것이 여러 번 전달될 가능성이 있다.
  • 중복 제거는 높은 비용의 오퍼레이션
    • 메시지의 중복을 제거하기 위해서는 같은 메시지를 과거에 받은 것인지에 대한 여부를 판정해야함.

 

4-3. 시계열 데이터의 최적화

  • '프로세스 시간'과 '이벤트 시간'
    • 프로세스 시간(process time) : 서버가 처리하는 시간
    • 이벤트 시간(event time) : 클라이언트 상에서 메시지가 생성된 시간
  • 프로세스 시간에 의한 분할과 문제점
    • 분산 스토리지에 데이터를 넣는 단계에서는 이벤트 시간이 아닌 프로세스 시간을 사용하는 것이 보통 
    • 풀 스캔(full scan) : 다수의 파일을 모두 검색하는 쿼리, 시스템 부하를 크게 높이는 요인
  • 시계열 인덱스
    • 이벤트 시간에 대해 인덱스를 만드는 것
    • 정해진 시간에 발생한 인덱스를 조사하거나, 실시간 대시보드를 만드는 경우에 유용
    • 장기간에 걸쳐서 대량의 데이터를 집계하는 경우에는 분산 데이터베이스가 효율적이지는 않음
  • 조건절 푸시다운
    • 조건절 푸시다운 (predicate pushdown) : 최소한의 데이터만을 읽도록 하는 최적화

 

 

4-4. 비구조화 데이터의 분산 스토리지

  • 빅데이터를 위한 분산 스토리지는 (필요에 따라 얼마든지 확장할 수 있는) 확장성과 (데이터를 구조화하지 않고도 저장할 수 있는) 유연성이 필요

 

  • 도큐먼트 스토어
    • 데이터 처리의 유연성 목적
    • 장점 : 스키마를 정하지 않고 데이터 처리를 할 수 있음
  • MongoDB
    • 오픈 소스의 분산형 도큐먼트 스토어
    • 여러 노드에 데이터를 분산할 수 있지만, 대량의 데이터를 집계하는데 적합하진 않음