데이터로그😎

Data architecture 본문

Data Engineering

Data architecture

지연v'_'v 2023. 9. 7. 13:54

1. 빅데이터 구현 기술

빅데이터 처리 단

 

단계 역할 활용기술 처리
수집 - 내외부 데이터 연동
-내외부 데이터 통합
Crawling, OpenAPI, FTP, RSS, .. 전처리
적재 - 대용량/실시간 데이터 처리
- 분산 파일 시스템 저장
Distributed File, No-SQL… 전처리
처리 - 데이터 선택, 변환, 통합, 축소
- 데이터 워크플로 및 자동화
Structured Processing,
Unstructured Processing,
Workflow,
Scheduler
전처리 & 후처리
탐색 - 대화형 데이터 질의
- 탐색적 Ad-Hoc 분석
SQL Like, Distributed Programming,
Exploration Visualization
후처리
분석 - 빅데이터 마트 구성
- 통계분석, 고급 분석
Data Mining, Machine Learning, Analysis Visualiztion 후처리
응용 - 보고서 & 시각화
- 분석정보 제공
Data Export/Import
Reporting
Business Visualization
후처리

 

1-1. Software Architecture

출처: 러닝 스파크(O'REILLY', Jpub)

  1. 수집: flume, Fluented, Seribe, Logstash, Chukma, Storm, Esper
  2. 적재:
    • 대용량 파일 전체를 영구저장: HDFS(Hadoop)
    • 대규모 메시징 데이터 전체를 영구저장: NoSQL(HBase, MongoDB, Casandra..) —— 직방 데이터 저장한거 생각해봐라
    • 대규모 메시징 데이터의 일부만 임시저장: 인메모리 캐시(Redis, Memcached, Infinispan..)
    • 대규모 메시징 데이터 전체를 버퍼링 처리: Message Oriented Middleware(Kafka, RabbitMQ, ActiveMQ ..)
  3. 처리/탐색: Hue, Hive, Spark SQL
  4. 분석/응용: Implala, Zeppelin, Mahout, R, Tensorflow, Sqoop

2. Data Architecture

2-1. 과거 데이터 관리 아키텍쳐 (ETL)

ETL

  • 데이터 용도 정해져 있다.
    • ETL(Extract, Transform, Load) 방식으로 데이터 처리
      • 데이터 추출,수집(Extract) → 내 테이블에 맞게 변형(Transform) → 적재,저장(Load)
      • warehouse에 올리는 것 = 적재
      • mart에 올리는 것= 저장
      • 예) E→ by crawling, T → 전처리, Load → DB에 넣기 , csv로 말기
  • 데이터의 수집처 일정.
    • ~로부터 어떤 데이터를 뽑아오겠다.

 

2-2. 현재의 데이터 관리 아키텍쳐 (ELT)

ELT

  • 실시간성: 배민, 요기요, 쿠팡이츠 → 기사님들 실시간 위치
  • 빨라지는 기능 추가: 많은 양의 데이터 빠르게 처리
  • 실시간 로그
  • 서드 파티 데이터 : 다른 회사 데이터, 내가 기획하지 않은 데이터
    • 구글: 맨처음 크롤러 개발,
  • 스키마 정의 매우 힘들어짐!
  • 데이터 추출(Extract) → 일단 저장(Load) → 쓰임새에 따라 변환(Transform)
  • 과거 ETL → 현재 ELT(현재에서 ETL 쓰기도 한다. ELT만 쓰는거 아님)
  • ETL: 서비스 중심, ELT: 데이터 중심
  • Spark 이용해 데이터 및 로그에서 데이터 추출 → Spark or Flink 등을 이용해 어느정도 정리 후 저장 → 어플 또는 분석 툴에서 이용 가능하도록 변환
  • Spark는 엔지니어들에게 중요한 요소
  • 스파크 이용하면 데이터 분석, 머신러닝까지..! 많은걸 할 수 있다.

 

2-3. 데이터 엔지니어링 도구

 


3. Processing (미래 데이터 예측)

  • 사용 툴
    • tensorflow
    • pytorch
    • spark
    • spark ML
    • Flink

 

3-1. Batch Processing

  • 배치(Batch) = 일괄.
  • 과거의(이미 적재된) 데이터 처리
  • 새로운 데이터가 없더라도 처리해야 함.
  • if 0~1시까지 데이터 들어옴 → 처리/ 1~2시에 데이터 안들어옴? → 그래도 처리 프로세스는 밟아야 함.

3-2. Stream processing

  • 미래에 들어올 데이터도 고려.
  • 데이터 무한정 처리.
  • 장애 대응, 실시간성 유지 중요
  • 불규칙적으로 데이터가 들어옴 → 대기
    • 데이터가 들어올 때(event)마다 바로바로 처리
    • event와 Data, Message는 유사

3-3.Micro-Batch(마이크로 배치)

  • 준 실시간성
  • Spark Streaming
  Batch Processing Stream Processing
데이터 시점 과거 데이터 처리(이미 있는 데이터) 미래 데이터 고려
처리 프로세스 - 많은 양의 데이터를 정해진 시간에 한꺼번에 처리

-새로운 데이터 없더라도 처리 프로세스 진행
- 실시간으로 쏟아지는 데이터를 계속 처리하는 것
- event 발생 때마다 바로바로 처리
언제 사용? - 실시간성을 보장하지 않아도 될 때
- 데이터를 한꺼번에 처리할 수 있을 때
- 무거운 처리(Machine Learning)
- 실시간성 보장해야 할 때
- 데이터가 여러 소스로부터 들어올 때
- 데이터가 가끔 or 지속적으로 들어올 때(불규칙적 데이터)
- 가벼운 데이터
예시 - 매월 1일마다 수요,공급 예측
- 매주 발행하는 뉴스레터.. - 매달..
- 사기거래 탐지
- 이상 탐지
- 실시간 알림
- 실시간 수요, 공급 측정
- 실시간 기능이 들어간 어플
처리 플로우 1. 데이터를 모아서
2. DB에서 읽어서 처리한 후
3. 다시 DB에 담는다.
1. 데이터가 들어올 때마다
2. 쿼리/처리 후 State를 업데이트 한 다음
3. DB에 담는다.

 

 

4. Tool 사용 흐름

 

Data Lake : 데이터 모은 것들 쌓아놓는 곳

  • HDFS(Hadoop)
  • Mongo
  • CSV
  • 여기서 spark, hive를 통해 data warehouse로 변경

Data Warehouse, container

  • HDFS
  • MySQL
  • File..
  • (mongo DB는 HDFS와의 연동이 힘들다. 그래서 여기서 빠짐)
    • warehouse에 있는 데이터를 토대로 모델 train(sklearn, tensorflow, pytorch)
    • warehouse에 있는 데이터를 토대로 Data Mart로 갈 수도(MySQL..)
  •