아파치 스톰
1. 개요
아파치 스톰은 아파치 라이선스 하에 개발된 분산 실시간 컴퓨팅 시스템이다. 님버스와 수퍼바이저 데몬으로 구성된 클러스터 아키텍처를 가지며, 주키퍼를 사용하여 클러스터 상태를 관리한다. 토폴로지, 스트림, 스파우트, 볼트 등의 구성 요소를 가지며, 스트림 처리 엔진 중 하나이다. 경쟁 플랫폼으로는 헤론, 스파크 스트리밍, 플링크 등이 있다.
이미지 준비중입니다.
| 개발사 | Backtype, Twitter |
|---|---|
| 최신 릴리스 버전 | 2.5.0 |
| 최신 릴리스 날짜 | 2023년 8월 4일 |
| 운영체제 | 크로스 플랫폼 |
| 저장소 | Storm Repository |
| 프로그래밍 언어 | Clojure & 자바 |
| 장르 | 분산 스트림 프로세싱 |
| 라이선스 | 아파치 라이선스 2.0 |
| 웹사이트 | 아파치 스톰 공식 웹사이트 |
-
분산 컴퓨팅 구조 -
슈퍼컴퓨터
슈퍼컴퓨터는 일반 컴퓨터보다 훨씬 높은 성능을 가진 컴퓨터로, 복잡한 계산과 시뮬레이션을 수행하며, 프로세서, 메모리, 스토리지, 네트워크 등으로 구성되어 병렬 처리를 통해 높은 성능을 구현하고, 군사, 기상 예측, 과학 기술 분야, 인공지능 등 다양한 분야에서 활용되고 있다. -
분산 컴퓨팅 구조 -
맵리듀스
맵리듀스는 대용량 데이터 처리를 위해 구글에서 개발한 프로그래밍 모델이자 프레임워크로, Map과 Reduce 함수를 사용하여 데이터를 병렬 처리하며 하둡 등의 오픈 소스 구현을 통해 널리 쓰인다. -
아파치 소프트웨어 재단 프로젝트 -
아파치 루씬
아파치 루씬은 더그 커팅이 개발한 오픈 소스 전문 검색 라이브러리이며, 텍스트 색인 및 검색 기능을 제공하여 웹 검색 엔진, 퍼지 검색, 추천 시스템 구현 등에 사용된다. -
아파치 소프트웨어 재단 프로젝트 -
아파치 하둡
아파치 하둡은 대용량 데이터를 분산 처리하기 위한 자바 기반의 오픈 소스 프레임워크로, HDFS, 맵리듀스, YARN 등의 모듈로 구성되어 클라우드 환경에서도 사용된다. -
클라우드 인프라스트럭처 -
클라우드 컴퓨팅
-
클라우드 인프라스트럭처 -
마이크로소프트 애저
마이크로소프트 애저는 전 세계 데이터 센터를 통해 600개 이상의 서비스를 제공하는 마이크로소프트의 클라우드 컴퓨팅 플랫폼으로, 다양한 컴퓨팅, 데이터베이스, 스토리지, AI, IoT 기능과 개발자 지원 서비스를 제공하지만 복잡한 가격 모델과 서비스 장애 및 보안 문제가 우려된다.
2. 개발
아파치 스톰은 아파치 라이선스 하에 개발되어 대부분의 회사에서 자유롭게 사용할 수 있다. 버전 관리는 깃(Git)을 사용하며, 문제 추적에는 아틀라시안 지라(Atlassian JIRA)가 사용된다.
2.1. 주요 릴리스
wikitable
3. 아키텍처
아파치 스톰 클러스터는 마스터 노드와 워커 노드로 구성된다. 마스터 노드는 작업을 워커 노드에 할당하고 성능을 모니터링하는 데몬인 님버스(Nimbus) 를 실행한다. 워커 노드는 작업을 다른 워커 노드에 할당하고 필요에 따라 작동하는 수퍼바이저(Supervisor) 라는 데몬을 실행한다. 스톰은 클러스터의 상태를 자체적으로 모니터링할 수 없기 때문에, 님버스와 수퍼바이저 간의 통신 및 상태 관리를 위해 [[주키퍼 (소프트웨어)|주키퍼(ZooKeeper)]] 를 사용한다.
3.1. 구성 요소
아파치 스톰 클러스터는 마스터 노드와 워커 노드로 구성된다. 마스터 노드는 작업을 워커 노드에 할당하고 성능을 모니터링하는 데몬인 님버스(Nimbus) 를 실행한다. 워커 노드는 작업을 다른 워커 노드에 할당하고 필요에 따라 작동하는 수퍼바이저(Supervisor) 라는 데몬을 실행한다. 스톰은 클러스터의 상태를 자체적으로 모니터링할 수 없기 때문에, 님버스와 수퍼바이저 간의 통신 및 상태 관리를 위해 주키퍼(ZooKeeper) 를 사용한다.
스톰은 토폴로지, 스트림, 스파우트, 볼트 등의 구성 요소를 가진다. 토폴로지는 스트림과 스파우트, 볼트로 구성된 네트워크이다. 스트림은 튜플의 무제한 파이프라인이며, 스파우트는 데이터를 스트림 튜플로 변환하여 처리를 위해 볼트로 보내는 데이터 스트림의 소스이다. 볼트는 스트림으로부터 튜플을 받아 처리하고, 결과를 다른 볼트나 외부 시스템으로 전달한다.