아파치 스톰
더 많은 작업
아파치 스톰(Apache Storm)은 끝없이 들어오는 데이터 스트림을 여러 서버에 나누어 실시간으로 처리하는 오픈소스 분산 스트림 처리 시스템으로, 스파우트(데이터 원천)와 볼트(처리 단계)를 이은 토폴로지를 멈추지 않고 돌린다.
스톰은 백타입(BackType)의 네이선 마즈(Nathan Marz)가 만들었고, 트위터가 회사를 인수한 뒤 2011년 오픈소스로 공개했다. 2014년 아파치 소프트웨어 재단의 최상위 프로젝트가 되었다. 공식 사이트는 스톰을 제한 없는(unbounded) 데이터 스트림을 안정적으로 처리하게 해 주는 분산 실시간 계산 시스템으로 소개하며, 하둡이 일괄 처리에 해 준 일을 실시간 처리에 해 준다고 설명한다. 쓰임새로는 실시간 분석, 온라인 머신러닝, 연속 계산, 분산 RPC, ETL 을 든다.[1]
트위터는 SIGMOD 2014 논문에서 스톰을 트위터의 실시간 분석 인프라로 소개하며, 노드 장애가 나도 처리를 이어 가고 튜플이 적어도 한 번은 처리되도록 보장하는 구조를 설명했다.[2]
- 토폴로지(topology) - 실시간 응용의 처리 흐름. 맵리듀스 작업과 비슷하지만, 작업은 끝나는 반면 토폴로지는 사용자가 멈출 때까지 계속 돈다[3]
- 스트림(stream) - 끝없이 이어지는 튜플의 흐름
- 스파우트(spout) - 스트림의 원천. 카프카 같은 메시지 큐나 외부 API 에서 데이터를 읽어 토폴로지에 튜플로 내보낸다[3]
- 볼트(bolt) - 필터링, 집계, 조인, 데이터베이스 저장 등 실제 처리를 맡는 단계
- 님버스(Nimbus)와 슈퍼바이저(Supervisor) - 토폴로지를 배포·감시하는 마스터와 각 노드에서 작업자를 띄우는 데몬. 둘 사이 조정은 주키퍼가 맡는다
빅데이터 처리 흐름을 수집 - 적재 - 처리·탐색 - 분석·응용 계층으로 나누면, 스톰은 들어오는 이벤트를 곧바로 받아 걸러 내고 집계해 저장소로 넘기는 실시간 수집·적재(스트림 처리) 쪽에 놓인다. 흔한 구성은 플럼이나 카프카가 데이터를 모아 전달하고, 스톰이 그 스트림을 실시간으로 가공해 HBase·레디스 같은 저장소에 적재하는 것이다.
| 도구 | 하는 일 | 주로 놓이는 계층 |
|---|---|---|
| 플럼 | 로그·이벤트를 모아 HDFS 등으로 옮김 | 수집 |
| 아파치 카프카 | 대용량 메시지를 토픽으로 저장·중계 | 수집(전달) |
| 아파치 스톰 | 스트림을 실시간으로 가공·집계 | 수집·적재(실시간 처리) |
| 아파치 머하웃 | 대규모 데이터용 머신러닝 알고리즘 라이브러리 | 분석·응용 |
- 머하웃은 데이터를 모으는 도구가 아니라 분석 알고리즘 라이브러리이므로 수집 계층 기술이 아니다
- ↑ 「Apache Storm」, Apache Software Foundation, https://storm.apache.org/, 확인일: 2026-11-05.
- ↑ Ankit Toshniwal 외, 「Storm@twitter」, Proceedings of the 2014 ACM SIGMOD International Conference on Management of Data, pp. 147-156.
- ↑ 3.0 3.1 「Concepts」, Apache Storm Documentation, https://storm.apache.org/releases/current/Concepts.html, 확인일: 2026-11-05.