꾸준히 하고싶은 개발자

빅데이터 적재 2 -실시간 로그 /분석 적재(Storm,Esper) 본문

카테고리 없음

빅데이터 적재 2 -실시간 로그 /분석 적재(Storm,Esper)

프라우스 2022. 10. 20. 21:02

Storm 

-스톰은 모든 데이터를 인메모리 상에서 병렬 처리하기위한 소프트웨어다.(실시간 스트리밍 데이터 분석 솔루션)

-분산 처리 하기 위한 강력한 기능 (분리,정제 통합,집계 등) 과 아키텍처도 제공한다.

-실시간  분산 처리 유형으로는 데이터 발생과 동시에 처리하는 완전 실시간 방식과 발생한 데이터를 적재한 후 빠르게 배치를 실행하는 마이크로 배치 방식이있다.

-전자에 해당하는 완전 실시간 방식으로 조금의 레이턴시도 허용되지 않는 아키텍처를 적용한다.

-스톰은 지난 2011년 트위터 가 백타이프라는 회사 로 부터 인수했고, 곧바로 오픈소스 프로젝트로 제공했다.

 

스톰 주요구성요소

스톰 아키텍처

Nimbus

자바 프로그램 으로 구성된 Topology jar를 배포하기 위해 주키퍼로 부터 Supervisor 정보를 알아낸다.

그후 해당 Topology jar 파일을 각 supervisor에 전송하면 Supervisor 는 해당 Node에서 Worker, Executor를 만들고 spout 과 Bolt가 실행되기 위한 Task 도 할당한다.

Supervisor 

Supervisor가 정상적으로 배포되면 External Source  Application 1에서 발생한 데이터 가 spout를 통해 유입되기 시작한다. 이를 다시 Bolt가 전달 받아 데이터를 분산 처리 하고 처리 결과는 Bolt를 통해 타깃 시스템인 External Target Application 2 로 전송된다 이때 Task  Executor 개수를 증가 시키면서 대규모 병렬 처리가 가능해지고 spout와 Bolt 의 성능이 향상된다.

-스톰 아키텍처 는 매우 견고한 장애 복구 기능도 제공한다.

-특정 supervisor가생성한 worker 프로세스에 심각한 문제가 발생해 종료되면 Supervisor는 새로운 Worker 프로세스를 다시 생성된다.

-처리중 이던 데이터들(튜플) 은 이전 수신지로 롤백되고 Topology가 다시 정상적으로 복구 되면 롤백 시점부터 다시 처리되면서

데이터 정합성을 보장한다.

에스퍼 

에스퍼의 경우 실시간 스트리밍 데이터의 복잡한 이벤트 처리가 필요할때 사용하는 룰 엔진이다 . 

실시간 스트리밍 데이터의 복잡한 이벤트 처리가 필요할 때 사용하는 롤 엔진아라고 하며 CEP 엔진이라고도 할 수 있습니다.

다양한 조건과 복합적인 이벤트를 하나의 룰로 정의할 수 있으며 CEP를 처리하고 룰을 관리하는 것이 손쉽다고 할 수 있는 자바 라이브러리 프로그램이기 때문에 어플리케이션 응용 프로그램에 설치해서 프로그래밍이 가능합니다.

애플리케이션 서버(톰캣 제이보스, OSGI 스톰 등) 또는 애플리케이션의 컨텍스트에 에스퍼 라이브러리를 설치하고 , 해당 라이브러리를 이용해 CEP 프로그램밍을 하는 단순한 아키텍처를 가지고있다.

에스퍼 EPL(Event processing Language)을 이용해 대규모 분산 아키텍처를 구성할때 는 통합 관리하고 분산노드에 일관되게 적용하기 위해서 복잡한 구성이 필요하다 . 분산된 응용 서버에 에스퍼 엔진을 설치하고 , 에스퍼 엔진들이 동일한 EPL 룰을 동적으로 일관 로딩하기 위해EPL 공유 저장소가 이용된다.

실습 

 

chmod

drwxr-xr-x

d : 파일의 종류 ( - 일반, d 디렉터리 )

drwxr-xr-x  소유자의 권한(User)

drwxr-xr-x  그룹의 권한(Group)

drwxr-xr-x  기타 사용자의 권한(Other)

※ rwx (읽기, 쓰기, 실행) / 권한이 없을 경우 - 로 표기

명령어: chmod 777 -R / 폴더명

명령어:chmod 755 -R / 폴더명

 스톰을 실행시키전에 폴더 의 권한을  cmd 터미널등 에서 변경해주어야한다.

세 파일에 대해 아래의 Service/chkconfig 등록 명령을 각각 실행한다.

service storm-nimbus start

service storm-supervisor start

service-storm-ui start

아래의 명령으로 스톰이 정상적으로 작동을 했는지 확인

service storm-nimbus status

service storm-supervisor status

service-storm-ui status

 

스톰 UI 을 접속해서 스톰의 중요 상태를 모니터링 할 수있다.