반응형
본 포스팅은 패스트 캠퍼스의 "실시간 빅데이터 처리를 위한 Spark & Flink Online" 참고하여 제작했습니다! 전반적인 정의에 대해서만 정리하고 프로그래밍 관련은 강의를 보시는걸 추천드립니다!
기본 정보
- 오픈소스 스트림 프로세싱(Stream Processing) 프레임워크
- 분산처리 / 고성능 / 고가용성
- 배치 프로세싱 또한 지원
- Spark 보다 빠른 속도 (오...?)
- Fault-tolerance - 시스템 장애시 장애 직적으로 돌아가서 다시 시작가능
- Rescalability - 실행도중 리소스 추가 가능
Stream Processing
Batch Processing과 다르게 비교적 가벼운 데이터(ex. 주식 거래소, 웹 서버, 센서 데이터, 비정상 거래 탐지...)를 처리하는데 사용함.
이외로 Batch Processing은
- "한정된 데이터를 다루거나"
- "모든 데이터셋을 읽은 후 처리할수있으며"
- "주기적으로 실행되는 작업"
- "처리속도보다는 처리량에 포커스"
반대로 Stream Processing은
- 데이터가 무한이라고 가정
- 데이터가 도착할때마다 처리
- 실시간으로 실행되는 작업
- 처리량보다는 처리속도에 포커스
Flink의 기본적인 처리 구조는 다음과같다
- Source - 한개 혹은 여러개의 데이터 소스가 있음
- Operators - 데이터를 변환 (Transformation, MapReduce같은 부분인듯)
- Sink - 데이터플로우의 마지막부분(데이터를 출력, 저장)
Flink또한 Spark와 동일하게 Lazy Evaluation특성을 갖고있음
Hadoop vs Spark vs Flink
Hadoop
- Batch Processing
- Disk에서 데이터를 읽고 처리
- 데이터 처리 방법을 손수 코딩
- 낮은 단계의 추상화
Spark
- Batch Processing (Batch based Streaming)
- In-Memory 데이터 처리
- 높은 단계의 추상화
- 쉬운 프로그래밍(RDD)
- Spark - MLlib (머신러닝 라이브러리)
- Scala로 개발됨
- 효율적인 메모리 관리가 어려움 (Out of Memory 자주 발생)
- 의존성 관리로 DAG 사용
Flink
- Stream Processing
- In-Memory 데이터 처리
- 데이터 처리방식은 Spark와 굉장히 비슷함
- 높은 단계의 추상화
- 쉬운 프로그래밍(Dataflows)
- Flink - FlinkML (머신러닝 라이브러리)
- Java로 개발
- 내장 메모리 매니저 (Out of Memory 에러가 Spark에 비해 적게 발생)
- Controlled cyclic dependency graph (ML같이 반복적인 작업에 최적화)
Flink
다음과 같은 스펙을 갖고있음
- 클러스터를 이루고 100만 단위의 이벤트를 처리
- Latency가 1초이하
- Excatyle-Once
- https://www.samsungsds.com/kr/insights/flink.html (삼성SDS에서 설명한 Flink)
- 정확한 결과를 보장
Flink는 3가지 요소로 구성되어있음
- Storage
- Flink는 각종 저장 시스템들과 연동이 가능함(ex. HDFS, Local File System, Mongo DB, RDBMS, S3 ...)
- Deployment/Environment
- 리소스 관리도 저장 시스템과 같이 여러 시스템과 연동이 가능(ex. YARN, Mesos, AWS, GCP ...)
- Engine
- JAVA로 만들어졌기 때문에 JVM위에서 돌아감
반응형
'Data > Data Engineering' 카테고리의 다른 글
[Airflow] MWAA - Datadog send_metrics 적용 (0) | 2022.03.16 |
---|---|
[Airflow] 인자값 전송 및 Task raise exception (0) | 2022.03.10 |
[Kafka] Kafka 정리 (0) | 2022.02.05 |
[Airflow] 관련 정리 (0) | 2022.02.02 |
[Pyspark] 소소한 지식 (pyspark, RDD, 캐싱, 파티셔닝, 최적화) (1) | 2022.02.01 |