본문 바로가기

[빅데이터]

[빅데이터] 적재2 - 실시간 로그/분석

적재1 - 로그 파일 적재는 큰 파일을 하둡에 장기간 저장해 놓고 대규모 배치 작업과 분석에 이용된다.

적재2 - 실시간 로그 분석에서는 작지만 대량으로 발생하는 메시지성 데이터를 실시간으로 분석 처리하며,

해당 결과를 인메모리에 저장해 주변 시스템과 빠르게 공유한다.

 

유입된 작은 메시지 한건을 곧바로 하둡에 저장할 경우 한 개의 HDFS파일이 생성되는데, 메시지의 경우 파일 개수가 기하급수적으로 늘어나고 하둡 클러스터에 지나친 오버헤드가 발생하기 때문에 칼럼 지향형 NoSQL 데이터베이스(HBase)를 사용한다.

 

빅데이터 실시간 적재에 활용하는 기술

* HBase

HBase는 하둡 기반의 칼럼 지향 NoSQL 데이터베이스로서 스키마 변경이 자유롭고, 리전이라는 수십~수백 대의 분산 서버로 샤딩과 복제 등의 기능을 지원한다. 특히 하둡의 확장성과 내고장성을 그대로 이용할 수 있어 대규모 실시간 데이터 처리를 위한 스피드 레이어 저장소에 HBase가 주로 사용된다.

 

HBase 아키텍처

HBase 아키텍처의 가장 큰 특징은 하둡의 HDFS를 기반으로 설치 및 구성된다는 것이다. 그로 인해 분산 데이터베이스 아키텍처를 채택하고 있으며 HDFS의 가용성과 확장성을 그대로 물려받았다.

 

HBase 활용 방안

지금까지 내 프로젝트는 플럼을 이용해 운전자의 운행 정보를 카프카까지 전송했다. 이번에는 카프카에 저장돼 있는

데이터를 스톰이 받아서 HBase의 테이블에 모두 적재한다. 

 

* 레디스

레디스(Redis)는 분산 캐시 시스템이면서 NoSQL 데이터베이스처럼 대규모 데이터 관리 능력도 갖춘 IMDG(In-Memory Data Grid) 소프트웨어이다. 레디스는 키/값 형식의 데이터 구조를 분산 서버상의 메모리에 저장하면서 고성능의 응답 속도를 보장한다. 

 

레디스 활용 방안

분석할 결과를 빠르게 저장하면서 주변 시스템과 공유하기 위한 저장소로 레디스를 활용한다.

내 프로젝트에서는 HBase에는 운전자의 모든 상태 정보를 저장하고, 레디스에는 운전자의 특정 이벤트 결과만 저장한다.

 

* 스톰

스톰(Storm)은 스피드 데이터를 인메모리 상에서 병렬 처리하기 위한 소프트웨어다. 빅데이터 3V중 Velocity(속도)에 해당하는 스피드 데이터는 수많은 이벤트를 만들고, 작지만 대규모의 동시다발적이라는 특성이 있다. 이러한 스피드 데이터를 실시간으로 다루기 위해 모든데이터를 인메모리 상에서 분산 병렬 처리하기 위해 스톰을 사용한다.

 

스톰 활용 방안

내 프로젝트에서는 카프카의 유입되는 모든 운전자의 운행 정보 데이터를 HBaes 서버와 레디스 서버에 적재한다.

그 중간에 벙렬처리와 분석 결과 처리를 도와주는 것이 스톰이 된다.

 

* 에스퍼

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

스톰이 대규모의 실시간 데이터를 단순 가공 및 추출 하는데는 문제없지만 데이터의 복잡한 패턴을 찾고 이벤트를 처리하기는 쉬운일이 아닌데 에스퍼의 CEP는 그 기능을 쉽게 처리해준다.

 

에스퍼는 CEP(Complex Event Processing)엔진이다. 엔진은 단순 자바 라이브러리 프로그램으로 설치와 사용은 간단하다. 이때 대규모 분산 아키텍처를 구성할 때 룰을 통합하고 관리하는 EPL(공유저장소)가 필요하다.

 

에스퍼 활용 방안

복잡한 패턴을 찾고 이벤트를 처리하는(EPL은 내 프로젝트에서 30초 동안의 평균 시속을 체크해서 80km를 초과하는 운전자 이벤트를 정보를 감지)룰을 정의하고 이벤트 감지 데이터는 레디스에 적재된다.

 

 

 

 

'[빅데이터]' 카테고리의 다른 글

[빅데이터] 분석  (0) 2023.05.02
[빅데이터] 탐색  (0) 2023.05.02
[빅데이터] Cloudera Manager  (0) 2023.04.25
[빅데이터] 적재1 - 대용량 로그 파일 적재  (0) 2023.04.25
[빅데이터] 수집  (0) 2023.04.24