에스퍼(Esper) 개념
에스퍼
에스퍼의 경우 실시간 스트리밍 데이터의 복잡한 이벤트 처리가 필요할 때 사용하는 룰 엔진이다. 실시간으로 발생하는 데이터 간의 관계를 복합적으로 판단 및 처리하는 것을 CEP(Complex Event Processing)라고 하는데, 에스퍼가 바로 CEP 기능을 제공한다. 에스퍼를 이용하면 다양한 조건과 복합 이벤트를 하나의 룰로 쉽게 정의할 수 있어 CEP 처리 및 관리가 수월하다.
에스퍼의 기본 요소
주요 구성 요소 | 설명 |
---|---|
Event | 실시간 스트림으로 발생하는 데이터들의 특정 흐름 또는 패턴을 정의 |
EPL | 유사 SQL을 기반으로 하는 이벤트 데이터 처리 스크립트 언어 |
Input Adapter | 소스로부터 전송되는 데이터를 처리하기 위한 어댑터 제공(CSV, Socket, JDBC, Http 등) |
Output Adapter | 타깃으로 전송하는 데이터를 처리하기 위한 어댑터 제공(HDFS, CSV, Socket, EMail, Http등) |
Window | 실시간 스트림 데이터로부터 특정 시간 또는 개수를 설정한 이벤트들을 메모리 상에 등록한 후 EPL을 통해 결과를 추출 |
에스퍼 아키텍처
CEP(Complex Event Processing) 엔진은 단순 자바 라이브러리 프로그램으로, 설치와 사용이 매우 간단하다. 그로 인해 애플리케이션 서버(톰캣, 제이보스, OSGI, 스톰 등)에 에스퍼 라이브러리를 설치하고, 해당 라이브러리를 이용해 CEP 프로그래밍을 하는 단순한 아키텍처를 가지고 있다.
[에스퍼 아키텍처1]
하지만 에스퍼의 EPL(Event Processing Language)을 이용해 대규모 분산 아키텍처를 구성할 때는 룰을 통합 관리하고, 분산 노드에 일관되게 적용하기 위해 다소 복잡한 구성이 필요하다. 이때 분산된 응용 서버에 에스퍼 엔진을 설치하고, 에스퍼 엔진들이 동일한 EPL 룰을 동적으로 일괄 로딩하기 위해 EPL 공유 저장소가 이용된다.
[에스퍼 아키텍처2]
에스퍼 활용 방안
현재 아키텍처에서 에스퍼 활용 방안 예시
위의 구성된 아키텍처에서 운전자의 운행 데이터를 실시간으로 분석하기 위해 에스퍼 EPL을 활용한다. EPL은 30초 동안의 평균 시속을 체크해서 80km/h를 초과하는 운전자 이벤트 정보를 실시간으로 감지할 수 있도록 룰을 정의한다.
출처
도서) 실무로 배우는 빅데이터 기술
댓글남기기