✔️ 등장배경
" 하둡의 연산하는 놈(MapReduce) 이 너무 답답시러움 "
예전 빅데이터를 위해 하둡을 쓸때 이녀석이 일하는건 참 미련했다.
1. 하드에서 데이터를 꺼낸다.
2. 계산한다.
3. 다시 하드에 저장한다(중간저장)
4. 그걸 다시 꺼내 계산한다.
5. 다시 또 하드에 저장한다.
→ 속터져 죽음
아오!!!! 중간에 하드에 저장하지말고 걍 RAM에 저장하면 되잖아?!
해서 나온놈이 바로 스파크다. (속도가 100배 빨라짐)
✔️ 특징
1) In-Memory Computing (램에서 시작하고 렘에서 끝낸다.)
데이터를 디스크가 아닌 RAM(램) 에 올려놓고 계산한다.
2) Lazy Evaluation
출력할 때까지 기다렸다가 한번에 계산 때림
3) 하나로 다됨
걍 이거 하나로 SQL, 실시간, AI 다된다.
어?.. 근데 적고 보니 Trino(트리노) 랑 같은거 아녀? 이 놈도 램이 주 무대인 녀석인데?
💡가장 큰 차이가 있다!!
➡ RAM 이 부족할 경우
Trino(트리노) : "아 몰라 나 파업!!!" (그냥 사망)
Spark(스파크) : "ㅠㅠ..그래도 주어진 일은 끝내야쥬.." (디스크를 써서라도 완료함)
➡ 데이터를 처리하다 실패했을 경우
Trino(트리노) : "뭐야 죽었어? 나도 죽을래!!(꽥)"
Spark(스파크) : "죽었네? 기억해 놨다가 이어서 작업해야지" (부분복구 가능)
적고 보니 트리노는 아주 적폐놈이고, 스파크는 책임감이 강한 녀석이다.
그래서
트리노는 빠르지만 예민한 녀석이라 보통 빠릿빠릿하게 조회해와야 하는 경우에 많이 쓰고,
스파크는 보통 오랜 시간이 걸려도 좋으니 어떻게든 처리를 해야 하는 경우, 특히 밤새 돌리는 데이터 배치작업(ETL)에 많이 쓰인다.
(트리노는 속도에 스탯 몰빵, 스파크는 안정성에 몰빵함)
어떤 상황에 트리노를 써야하고 스파크를 써야하는지 대충 감이 잡힌다.
✔️ 언제 써?
보통 MinIO(미니오)의 더러운 데이터를 꺼내서 파켓(Parquet) 보석으로 가공하는 핵심 엔진이 이녀석이다.
앞에서 설명한 바와 같이 데이터를 정재하기 위한거도 있지만 사실 그것만 하기엔 ㅋㅋ 너무 아깝다.
솔직히 그냥 이것만 쓰려면 대체제가 엄청 많기 떄문이다.
(ex .DuckDB, 파이썬 Polars, 아님 걍 트리노에서 해도 쌉가능)
얘가 비싼 이유는 바로 머리가 좋기 때문이다.
① 인공지능/머신러닝 학습
현재 제공중인 서비스에서 다음달 매출 예측 기능이 필요할 때,
트리노는 간단 덧셈뺄셈 정도는 잘해도 분석은 못한다.
하지만!! 이놈은 배치작업 잘한다 그랬죠? 몇년치 데이터 메모리에 올리고 학습 시킴 되겠죠?
-> 데이터를 단순히 옮기는 작업 뿐 아니라, 해당 데이터를 분석하여 지능(Model)을 만든다.
② 실시간 이상 탐지
1초에 1000개씩 로그가 우르르 올라올때,
스파크는 원래 데이터를 뭉텅이로 처리하는 엔진이다. 단건으로 처리 못하는 놈이다.
하지만, 마이크로 배치라고 하여 1초 동안 대기했다가 들어오는 데이터들을 샥샥- 처리하는.. 좀 실시간으로 보이게끔? 하는 꼼수 스킬이 있다.
요 스킬은 데이터가 아주 많을때 한꺼번에 다 처리하는거 보다 슬라이스 형식으로 잘라서 처리하는 방식으로 빠른 속도를 자랑한다.
-> 하지만 진짜 리얼타임은 아니기에.... 데이터를 수집하는 0.01초의 지연이 발생할 수 있고, 실제로 실시간으로 일어나야 하는 서비스는 사고가 날수 있다.
③ 그래프 분석
관련있는 데이터의 또 관련있는 데이터를 갖고 올수 있음.
-> 내 칭구의 칭구도 칭구칭긔
근데 ㅋㅋㅋ 사실
페타바이트 급의 데이터를 다룰 꺼 아니면 스파크는 좀 오버리소스긴 하다.
요즘엔 대체제가 워낙많다보니...
전 국민의 클릭로그 같은거 수집하지 않는이상
DuckDB나 Polars(폴라스) 정도면 노트북 한대에서 100GB 정도는 커버 가능하다.
심지어 개발속도도 넘사벽이라...(환경세팅 개 편함)
AI/ML 이면 거의 파이썬 기반일텐데 Spark(feat.JAVA) 보단 그냥 파이썬으로 이루어진
이녀석들을 쓰는게 더 효율적일 듯 하다.
-끝-
'web > AI' 카테고리의 다른 글
| [DataLake] 파이프라인 고도화(1) (0) | 2026.01.25 |
|---|---|
| [DataLake] 데이터 파이프라인 만들기 (0) | 2026.01.15 |
| [AI] MinIO(미니오)의 개념 (0) | 2026.01.09 |
| [AI] Hive Metastore (0) | 2026.01.08 |
| [AI] Trino(트리노) 의 개념 이해하기 (1) | 2025.12.30 |