데이터로그😎
Data architecture 본문
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
- 수집: flume, Fluented, Seribe, Logstash, Chukma, Storm, Esper
- 적재:
- 대용량 파일 전체를 영구저장: HDFS(Hadoop)
- 대규모 메시징 데이터 전체를 영구저장: NoSQL(HBase, MongoDB, Casandra..) —— 직방 데이터 저장한거 생각해봐라
- 대규모 메시징 데이터의 일부만 임시저장: 인메모리 캐시(Redis, Memcached, Infinispan..)
- 대규모 메시징 데이터 전체를 버퍼링 처리: Message Oriented Middleware(Kafka, RabbitMQ, ActiveMQ ..)
- 처리/탐색: Hue, Hive, Spark SQL
- 분석/응용: Implala, Zeppelin, Mahout, R, Tensorflow, Sqoop
2. Data Architecture
2-1. 과거 데이터 관리 아키텍쳐 (ETL)
- 데이터 용도 정해져 있다.
- ETL(Extract, Transform, Load) 방식으로 데이터 처리
- 데이터 추출,수집(Extract) → 내 테이블에 맞게 변형(Transform) → 적재,저장(Load)
- warehouse에 올리는 것 = 적재
- mart에 올리는 것= 저장
- 예) E→ by crawling, T → 전처리, Load → DB에 넣기 , csv로 말기
- ETL(Extract, Transform, Load) 방식으로 데이터 처리
- 데이터의 수집처 일정.
- ~로부터 어떤 데이터를 뽑아오겠다.
2-2. 현재의 데이터 관리 아키텍쳐 (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..)
'Data Engineering' 카테고리의 다른 글
[airflow] airflow(ubuntu)-mysql 연결하기? (0) | 2023.09.13 |
---|---|
[airflow] airflow 사용하기 (0) | 2023.09.11 |
[ubuntu] 로컬 WSL(ubuntu) - vscode 연결하기 (0) | 2023.09.11 |
[ubuntu] 로컬에 ubuntu(linux)를 설치하는 건에 관하여.... (0) | 2023.09.09 |
Data 저장소 (0) | 2023.09.07 |